refactor and bug fixes

This commit is contained in:
pgdalmeida 2026-08-05 17:00:42 +02:00
parent 271b076394
commit 48c9aa529d
Signed by: pedro.almeida
GPG Key ID: D4A6C394DF13F1D7
86 changed files with 458 additions and 6926 deletions

8
.gitignore vendored
View File

@ -1,5 +1,8 @@
# ---- Build output ----
/build/
# Every build tree, whatever its suffix: build/, build-tui/, build-notui/,
# build-test/, and any future variant. These hold generated objects, compiled
# binaries and FetchContent clones (ftxui, doctest) - none of it belongs in git.
build*/
/obj/
*.o
*.out
@ -9,7 +12,6 @@ bin/**/*.out
CMakeCache.txt
CMakeFiles/
cmake_install.cmake
/_deps/
# Editor / tooling
compile_commands.json
@ -29,5 +31,3 @@ bin/x64/Release/NIR/
# Real configs hold plaintext MQTT credentials. Commit config/config.example.ini instead.
config.ini
bin/x64/Release/config.ini
build-test/
build/

View File

@ -59,6 +59,7 @@ add_library(fgc_core STATIC
src/core/Calibration.cpp
src/core/CalibrationRoutine.cpp
src/core/MtiProtocol.cpp
src/sensors/Sht41Protocol.cpp
src/ui/UiSnapshot.cpp
src/ui/HeadlessUi.cpp
ini.c

View File

@ -115,9 +115,12 @@ While running, the program reads commands from stdin (one per line):
| `exit` | Stop everything and quit (Ctrl-D also works). |
The **Xsens MTi IMU** (set `[Features] enable_imu` + `[IMU] device`) drives the Sensors panel's live
roll/pitch/yaw and powers `gimbal calib`. In the TUI, `g` and `i` open full-screen **gimbal** and
**IMU** views, and an **activity strip** below the log shows the running calibration/diagnostics/scan
plus the last result. See [docs/configuration.md](docs/configuration.md).
roll/pitch/yaw and powers `gimbal calib`; the **SHT41** (`[Features] enable_env` + `[Env] i2c_device`,
or `--mock-env`) supplies the panel's ambient temperature and humidity — the MTi's device-internal
temperature is expanded-view-only, so the main window shows one unambiguous temperature. In the TUI,
`g` and `i` open full-screen **gimbal** and **sensors** views (the latter covering both the MTi and
the SHT41, each reading labelled with its source), and an **activity strip** below the log shows the
running calibration/diagnostics/scan plus the last result. See [docs/configuration.md](docs/configuration.md).
A typical first bring-up: `scripts/run.sh --init` to home the gimbal, then type `start` once you've confirmed
telemetry looks sane; adjust `set fps` / `set camera jxlq` live as needed. See

View File

@ -1,7 +0,0 @@
# CMake generated Testfile for
# Source directory: /home/pedro/code/fwt_2a/software
# Build directory: /home/pedro/code/fwt_2a/software/build-notui
#
# This file includes the relevant testing commands required for
# testing this directory and lists subdirectories to be tested as well.
subdirs("tests")

View File

@ -1,688 +0,0 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 4.3
# Default target executed when no arguments are given to make.
default_target: all
.PHONY : default_target
# Allow only one "make -f Makefile2" at a time, but pass parallelism.
.NOTPARALLEL:
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Disable VCS-based implicit rules.
% : %,v
# Disable VCS-based implicit rules.
% : RCS/%
# Disable VCS-based implicit rules.
% : RCS/%,v
# Disable VCS-based implicit rules.
% : SCCS/s.%
# Disable VCS-based implicit rules.
% : s.%
.SUFFIXES: .hpux_make_needs_suffix_list
# Command-line flag to silence nested $(MAKE).
$(VERBOSE)MAKESILENT = -s
#Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E rm -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/pedro/code/fwt_2a/software
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/pedro/code/fwt_2a/software/build-notui
#=============================================================================
# Targets provided globally by CMake.
# Special rule for the target test
test:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running tests..."
/usr/bin/ctest $(ARGS)
.PHONY : test
# Special rule for the target test
test/fast: test
.PHONY : test/fast
# Special rule for the target edit_cache
edit_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..."
/usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : edit_cache
# Special rule for the target edit_cache
edit_cache/fast: edit_cache
.PHONY : edit_cache/fast
# Special rule for the target rebuild_cache
rebuild_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..."
/usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : rebuild_cache
# Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache
.PHONY : rebuild_cache/fast
# Special rule for the target list_install_components
list_install_components:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\""
.PHONY : list_install_components
# Special rule for the target list_install_components
list_install_components/fast: list_install_components
.PHONY : list_install_components/fast
# Special rule for the target install
install: preinstall
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..."
/usr/bin/cmake -P cmake_install.cmake
.PHONY : install
# Special rule for the target install
install/fast: preinstall/fast
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..."
/usr/bin/cmake -P cmake_install.cmake
.PHONY : install/fast
# Special rule for the target install/local
install/local: preinstall
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..."
/usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
.PHONY : install/local
# Special rule for the target install/local
install/local/fast: preinstall/fast
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..."
/usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
.PHONY : install/local/fast
# Special rule for the target install/strip
install/strip: preinstall
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..."
/usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
.PHONY : install/strip
# Special rule for the target install/strip
install/strip/fast: preinstall/fast
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..."
/usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
.PHONY : install/strip/fast
# The main all target
all: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-notui/CMakeFiles /home/pedro/code/fwt_2a/software/build-notui//CMakeFiles/progress.marks
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all
$(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-notui/CMakeFiles 0
.PHONY : all
# The main clean target
clean:
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean
.PHONY : clean
# The main clean target
clean/fast: clean
.PHONY : clean/fast
# Prepare targets for installation.
preinstall: all
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast:
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall/fast
# clear depends
depend:
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
#=============================================================================
# Target rules for targets named fgc_core
# Build rule for target.
fgc_core: cmake_check_build_system
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 fgc_core
.PHONY : fgc_core
# fast build rule for target.
fgc_core/fast:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/build
.PHONY : fgc_core/fast
#=============================================================================
# Target rules for targets named fire_gimbal_control
# Build rule for target.
fire_gimbal_control: cmake_check_build_system
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 fire_gimbal_control
.PHONY : fire_gimbal_control
# fast build rule for target.
fire_gimbal_control/fast:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/build
.PHONY : fire_gimbal_control/fast
#=============================================================================
# Target rules for targets named fgc_tests
# Build rule for target.
fgc_tests: cmake_check_build_system
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 fgc_tests
.PHONY : fgc_tests
# fast build rule for target.
fgc_tests/fast:
$(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/build
.PHONY : fgc_tests/fast
#=============================================================================
# Target rules for targets named doctest_with_main
# Build rule for target.
doctest_with_main: cmake_check_build_system
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 doctest_with_main
.PHONY : doctest_with_main
# fast build rule for target.
doctest_with_main/fast:
$(MAKE) $(MAKESILENT) -f _deps/doctest-build/CMakeFiles/doctest_with_main.dir/build.make _deps/doctest-build/CMakeFiles/doctest_with_main.dir/build
.PHONY : doctest_with_main/fast
ini.o: ini.c.o
.PHONY : ini.o
# target to build an object file
ini.c.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/ini.c.o
.PHONY : ini.c.o
ini.i: ini.c.i
.PHONY : ini.i
# target to preprocess a source file
ini.c.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/ini.c.i
.PHONY : ini.c.i
ini.s: ini.c.s
.PHONY : ini.s
# target to generate assembly for a file
ini.c.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/ini.c.s
.PHONY : ini.c.s
main.o: main.cpp.o
.PHONY : main.o
# target to build an object file
main.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/main.cpp.o
.PHONY : main.cpp.o
main.i: main.cpp.i
.PHONY : main.i
# target to preprocess a source file
main.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/main.cpp.i
.PHONY : main.cpp.i
main.s: main.cpp.s
.PHONY : main.s
# target to generate assembly for a file
main.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/main.cpp.s
.PHONY : main.cpp.s
src/camera/ImagePipeline.o: src/camera/ImagePipeline.cpp.o
.PHONY : src/camera/ImagePipeline.o
# target to build an object file
src/camera/ImagePipeline.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/camera/ImagePipeline.cpp.o
.PHONY : src/camera/ImagePipeline.cpp.o
src/camera/ImagePipeline.i: src/camera/ImagePipeline.cpp.i
.PHONY : src/camera/ImagePipeline.i
# target to preprocess a source file
src/camera/ImagePipeline.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/camera/ImagePipeline.cpp.i
.PHONY : src/camera/ImagePipeline.cpp.i
src/camera/ImagePipeline.s: src/camera/ImagePipeline.cpp.s
.PHONY : src/camera/ImagePipeline.s
# target to generate assembly for a file
src/camera/ImagePipeline.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/camera/ImagePipeline.cpp.s
.PHONY : src/camera/ImagePipeline.cpp.s
src/camera/JpegXlEncoder.o: src/camera/JpegXlEncoder.cpp.o
.PHONY : src/camera/JpegXlEncoder.o
# target to build an object file
src/camera/JpegXlEncoder.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/camera/JpegXlEncoder.cpp.o
.PHONY : src/camera/JpegXlEncoder.cpp.o
src/camera/JpegXlEncoder.i: src/camera/JpegXlEncoder.cpp.i
.PHONY : src/camera/JpegXlEncoder.i
# target to preprocess a source file
src/camera/JpegXlEncoder.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/camera/JpegXlEncoder.cpp.i
.PHONY : src/camera/JpegXlEncoder.cpp.i
src/camera/JpegXlEncoder.s: src/camera/JpegXlEncoder.cpp.s
.PHONY : src/camera/JpegXlEncoder.s
# target to generate assembly for a file
src/camera/JpegXlEncoder.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/camera/JpegXlEncoder.cpp.s
.PHONY : src/camera/JpegXlEncoder.cpp.s
src/core/Application.o: src/core/Application.cpp.o
.PHONY : src/core/Application.o
# target to build an object file
src/core/Application.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/core/Application.cpp.o
.PHONY : src/core/Application.cpp.o
src/core/Application.i: src/core/Application.cpp.i
.PHONY : src/core/Application.i
# target to preprocess a source file
src/core/Application.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/core/Application.cpp.i
.PHONY : src/core/Application.cpp.i
src/core/Application.s: src/core/Application.cpp.s
.PHONY : src/core/Application.s
# target to generate assembly for a file
src/core/Application.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/core/Application.cpp.s
.PHONY : src/core/Application.cpp.s
src/core/CaptureScheduler.o: src/core/CaptureScheduler.cpp.o
.PHONY : src/core/CaptureScheduler.o
# target to build an object file
src/core/CaptureScheduler.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/CaptureScheduler.cpp.o
.PHONY : src/core/CaptureScheduler.cpp.o
src/core/CaptureScheduler.i: src/core/CaptureScheduler.cpp.i
.PHONY : src/core/CaptureScheduler.i
# target to preprocess a source file
src/core/CaptureScheduler.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/CaptureScheduler.cpp.i
.PHONY : src/core/CaptureScheduler.cpp.i
src/core/CaptureScheduler.s: src/core/CaptureScheduler.cpp.s
.PHONY : src/core/CaptureScheduler.s
# target to generate assembly for a file
src/core/CaptureScheduler.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/CaptureScheduler.cpp.s
.PHONY : src/core/CaptureScheduler.cpp.s
src/core/CommandParser.o: src/core/CommandParser.cpp.o
.PHONY : src/core/CommandParser.o
# target to build an object file
src/core/CommandParser.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/CommandParser.cpp.o
.PHONY : src/core/CommandParser.cpp.o
src/core/CommandParser.i: src/core/CommandParser.cpp.i
.PHONY : src/core/CommandParser.i
# target to preprocess a source file
src/core/CommandParser.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/CommandParser.cpp.i
.PHONY : src/core/CommandParser.cpp.i
src/core/CommandParser.s: src/core/CommandParser.cpp.s
.PHONY : src/core/CommandParser.s
# target to generate assembly for a file
src/core/CommandParser.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/CommandParser.cpp.s
.PHONY : src/core/CommandParser.cpp.s
src/core/Config.o: src/core/Config.cpp.o
.PHONY : src/core/Config.o
# target to build an object file
src/core/Config.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Config.cpp.o
.PHONY : src/core/Config.cpp.o
src/core/Config.i: src/core/Config.cpp.i
.PHONY : src/core/Config.i
# target to preprocess a source file
src/core/Config.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Config.cpp.i
.PHONY : src/core/Config.cpp.i
src/core/Config.s: src/core/Config.cpp.s
.PHONY : src/core/Config.s
# target to generate assembly for a file
src/core/Config.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Config.cpp.s
.PHONY : src/core/Config.cpp.s
src/core/Geometry.o: src/core/Geometry.cpp.o
.PHONY : src/core/Geometry.o
# target to build an object file
src/core/Geometry.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Geometry.cpp.o
.PHONY : src/core/Geometry.cpp.o
src/core/Geometry.i: src/core/Geometry.cpp.i
.PHONY : src/core/Geometry.i
# target to preprocess a source file
src/core/Geometry.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Geometry.cpp.i
.PHONY : src/core/Geometry.cpp.i
src/core/Geometry.s: src/core/Geometry.cpp.s
.PHONY : src/core/Geometry.s
# target to generate assembly for a file
src/core/Geometry.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Geometry.cpp.s
.PHONY : src/core/Geometry.cpp.s
src/core/Logger.o: src/core/Logger.cpp.o
.PHONY : src/core/Logger.o
# target to build an object file
src/core/Logger.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Logger.cpp.o
.PHONY : src/core/Logger.cpp.o
src/core/Logger.i: src/core/Logger.cpp.i
.PHONY : src/core/Logger.i
# target to preprocess a source file
src/core/Logger.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Logger.cpp.i
.PHONY : src/core/Logger.cpp.i
src/core/Logger.s: src/core/Logger.cpp.s
.PHONY : src/core/Logger.s
# target to generate assembly for a file
src/core/Logger.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Logger.cpp.s
.PHONY : src/core/Logger.cpp.s
src/core/Paths.o: src/core/Paths.cpp.o
.PHONY : src/core/Paths.o
# target to build an object file
src/core/Paths.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Paths.cpp.o
.PHONY : src/core/Paths.cpp.o
src/core/Paths.i: src/core/Paths.cpp.i
.PHONY : src/core/Paths.i
# target to preprocess a source file
src/core/Paths.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Paths.cpp.i
.PHONY : src/core/Paths.cpp.i
src/core/Paths.s: src/core/Paths.cpp.s
.PHONY : src/core/Paths.s
# target to generate assembly for a file
src/core/Paths.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Paths.cpp.s
.PHONY : src/core/Paths.cpp.s
src/core/ScanGrid.o: src/core/ScanGrid.cpp.o
.PHONY : src/core/ScanGrid.o
# target to build an object file
src/core/ScanGrid.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/ScanGrid.cpp.o
.PHONY : src/core/ScanGrid.cpp.o
src/core/ScanGrid.i: src/core/ScanGrid.cpp.i
.PHONY : src/core/ScanGrid.i
# target to preprocess a source file
src/core/ScanGrid.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/ScanGrid.cpp.i
.PHONY : src/core/ScanGrid.cpp.i
src/core/ScanGrid.s: src/core/ScanGrid.cpp.s
.PHONY : src/core/ScanGrid.s
# target to generate assembly for a file
src/core/ScanGrid.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/ScanGrid.cpp.s
.PHONY : src/core/ScanGrid.cpp.s
src/core/TelemetryParser.o: src/core/TelemetryParser.cpp.o
.PHONY : src/core/TelemetryParser.o
# target to build an object file
src/core/TelemetryParser.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/TelemetryParser.cpp.o
.PHONY : src/core/TelemetryParser.cpp.o
src/core/TelemetryParser.i: src/core/TelemetryParser.cpp.i
.PHONY : src/core/TelemetryParser.i
# target to preprocess a source file
src/core/TelemetryParser.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/TelemetryParser.cpp.i
.PHONY : src/core/TelemetryParser.cpp.i
src/core/TelemetryParser.s: src/core/TelemetryParser.cpp.s
.PHONY : src/core/TelemetryParser.s
# target to generate assembly for a file
src/core/TelemetryParser.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/TelemetryParser.cpp.s
.PHONY : src/core/TelemetryParser.cpp.s
src/serial/SerialMotorController.o: src/serial/SerialMotorController.cpp.o
.PHONY : src/serial/SerialMotorController.o
# target to build an object file
src/serial/SerialMotorController.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/serial/SerialMotorController.cpp.o
.PHONY : src/serial/SerialMotorController.cpp.o
src/serial/SerialMotorController.i: src/serial/SerialMotorController.cpp.i
.PHONY : src/serial/SerialMotorController.i
# target to preprocess a source file
src/serial/SerialMotorController.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/serial/SerialMotorController.cpp.i
.PHONY : src/serial/SerialMotorController.cpp.i
src/serial/SerialMotorController.s: src/serial/SerialMotorController.cpp.s
.PHONY : src/serial/SerialMotorController.s
# target to generate assembly for a file
src/serial/SerialMotorController.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/serial/SerialMotorController.cpp.s
.PHONY : src/serial/SerialMotorController.cpp.s
src/ui/HeadlessUi.o: src/ui/HeadlessUi.cpp.o
.PHONY : src/ui/HeadlessUi.o
# target to build an object file
src/ui/HeadlessUi.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/ui/HeadlessUi.cpp.o
.PHONY : src/ui/HeadlessUi.cpp.o
src/ui/HeadlessUi.i: src/ui/HeadlessUi.cpp.i
.PHONY : src/ui/HeadlessUi.i
# target to preprocess a source file
src/ui/HeadlessUi.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/ui/HeadlessUi.cpp.i
.PHONY : src/ui/HeadlessUi.cpp.i
src/ui/HeadlessUi.s: src/ui/HeadlessUi.cpp.s
.PHONY : src/ui/HeadlessUi.s
# target to generate assembly for a file
src/ui/HeadlessUi.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/ui/HeadlessUi.cpp.s
.PHONY : src/ui/HeadlessUi.cpp.s
src/ui/UiSnapshot.o: src/ui/UiSnapshot.cpp.o
.PHONY : src/ui/UiSnapshot.o
# target to build an object file
src/ui/UiSnapshot.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/ui/UiSnapshot.cpp.o
.PHONY : src/ui/UiSnapshot.cpp.o
src/ui/UiSnapshot.i: src/ui/UiSnapshot.cpp.i
.PHONY : src/ui/UiSnapshot.i
# target to preprocess a source file
src/ui/UiSnapshot.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/ui/UiSnapshot.cpp.i
.PHONY : src/ui/UiSnapshot.cpp.i
src/ui/UiSnapshot.s: src/ui/UiSnapshot.cpp.s
.PHONY : src/ui/UiSnapshot.s
# target to generate assembly for a file
src/ui/UiSnapshot.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/ui/UiSnapshot.cpp.s
.PHONY : src/ui/UiSnapshot.cpp.s
# Help Target
help:
@echo "The following are some of the valid targets for this Makefile:"
@echo "... all (the default if no target is provided)"
@echo "... clean"
@echo "... depend"
@echo "... edit_cache"
@echo "... install"
@echo "... install/local"
@echo "... install/strip"
@echo "... list_install_components"
@echo "... rebuild_cache"
@echo "... test"
@echo "... doctest_with_main"
@echo "... fgc_core"
@echo "... fgc_tests"
@echo "... fire_gimbal_control"
@echo "... ini.o"
@echo "... ini.i"
@echo "... ini.s"
@echo "... main.o"
@echo "... main.i"
@echo "... main.s"
@echo "... src/camera/ImagePipeline.o"
@echo "... src/camera/ImagePipeline.i"
@echo "... src/camera/ImagePipeline.s"
@echo "... src/camera/JpegXlEncoder.o"
@echo "... src/camera/JpegXlEncoder.i"
@echo "... src/camera/JpegXlEncoder.s"
@echo "... src/core/Application.o"
@echo "... src/core/Application.i"
@echo "... src/core/Application.s"
@echo "... src/core/CaptureScheduler.o"
@echo "... src/core/CaptureScheduler.i"
@echo "... src/core/CaptureScheduler.s"
@echo "... src/core/CommandParser.o"
@echo "... src/core/CommandParser.i"
@echo "... src/core/CommandParser.s"
@echo "... src/core/Config.o"
@echo "... src/core/Config.i"
@echo "... src/core/Config.s"
@echo "... src/core/Geometry.o"
@echo "... src/core/Geometry.i"
@echo "... src/core/Geometry.s"
@echo "... src/core/Logger.o"
@echo "... src/core/Logger.i"
@echo "... src/core/Logger.s"
@echo "... src/core/Paths.o"
@echo "... src/core/Paths.i"
@echo "... src/core/Paths.s"
@echo "... src/core/ScanGrid.o"
@echo "... src/core/ScanGrid.i"
@echo "... src/core/ScanGrid.s"
@echo "... src/core/TelemetryParser.o"
@echo "... src/core/TelemetryParser.i"
@echo "... src/core/TelemetryParser.s"
@echo "... src/serial/SerialMotorController.o"
@echo "... src/serial/SerialMotorController.i"
@echo "... src/serial/SerialMotorController.s"
@echo "... src/ui/HeadlessUi.o"
@echo "... src/ui/HeadlessUi.i"
@echo "... src/ui/HeadlessUi.s"
@echo "... src/ui/UiSnapshot.o"
@echo "... src/ui/UiSnapshot.i"
@echo "... src/ui/UiSnapshot.s"
.PHONY : help
#=============================================================================
# Special targets to cleanup operation of make.
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system

View File

@ -1,37 +0,0 @@
parseCommand handles single-verb commands 1 0.00355966
parseCommand splits device and trailing numeric value 1 0.00445292
parseCommand keeps option plus value 1 0.00346469
parseCommand keeps non-numeric option (raw motor command) 1 0.00475817
parseCommand on empty input 1 0.00347597
ConfigLoader maps and defaults typed values 1 0.00270282
environment overrides file credentials 1 0.00221621
ConfigLoader validates input 1 0.00298553
AxisMap converts degrees and counts with an offset 1 0.00230693
AxisMap clamps to the soft range on the way out 1 0.002558
AxisMap supports a negative (flipped) direction 1 0.00332187
AxisMap toDeg guards against a zero scale 1 0.00316496
parseCategories maps names, all/none, and flags unknown tokens 1 0.0029767
catFromString round-trips and flags unknown 1 0.00489377
category enable/disable/set round-trip 1 0.00363933
LOG_TRACE_CAT gating is independent of the linear level 1 0.00382581
expandUser expands ~ and environment variables 1 0.00350332
configSearchPaths honours the CLI argument first 1 0.00459609
parseScanCsv reads waypoints and skips comments/blanks 1 0.0033773
parseScanCsv throws on a malformed line 1 0.00301251
generateScanGrid produces yaw_intervals x pitch_levels points 1 0.00422159
ScanGrid cursor ping-pongs at both ends 1 0.00240321
ScanGrid single point and empty are safe 1 0.00278729
CaptureScheduler sweeps the scan grid with MOVE + settle + trigger 1 0.00287004
CaptureScheduler ControlCode 1 drives yaw to the target heading 1 0.00311307
CaptureScheduler clamps the target heading to the soft range 1 0.00324622
CaptureScheduler stays idle when capture inactive 1 0.00263608
parseTelemetryLine reads a two-axis ST line 1 0.00286897
parseTelemetryLine reads a yaw-only ST line (no flags field) 1 0.00273373
parseTelemetryLine rejects non-ST and malformed lines 1 0.0025402
parseTelemetryLine tolerates trailing CR 1 0.00300437
axisStateLabel maps every state 1 0.00241024
axisStateColor signals health 1 0.00260139
formatDegrees: one decimal, sign preserved, degree sign appended 1 0.00250799
formatTimeAgo: buckets and the never case 1 0.00247251
pendingSensorsView: all fields absent until drivers land 1 0.00252874
---

View File

@ -1,759 +0,0 @@
Start testing: Jun 23 12:12 CEST
----------------------------------------------------------
1/36 Testing: parseCommand handles single-verb commands
1/36 Test: parseCommand handles single-verb commands
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=parseCommand handles single-verb commands"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"parseCommand handles single-verb commands" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 3 | 3 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"parseCommand handles single-verb commands" end time: Jun 23 12:12 CEST
"parseCommand handles single-verb commands" time elapsed: 00:00:00
----------------------------------------------------------
2/36 Testing: parseCommand splits device and trailing numeric value
2/36 Test: parseCommand splits device and trailing numeric value
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=parseCommand splits device and trailing numeric value"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"parseCommand splits device and trailing numeric value" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 5 | 5 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"parseCommand splits device and trailing numeric value" end time: Jun 23 12:12 CEST
"parseCommand splits device and trailing numeric value" time elapsed: 00:00:00
----------------------------------------------------------
3/36 Testing: parseCommand keeps option plus value
3/36 Test: parseCommand keeps option plus value
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=parseCommand keeps option plus value"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"parseCommand keeps option plus value" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 3 | 3 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"parseCommand keeps option plus value" end time: Jun 23 12:12 CEST
"parseCommand keeps option plus value" time elapsed: 00:00:00
----------------------------------------------------------
4/36 Testing: parseCommand keeps non-numeric option (raw motor command)
4/36 Test: parseCommand keeps non-numeric option (raw motor command)
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=parseCommand keeps non-numeric option (raw motor command)"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"parseCommand keeps non-numeric option (raw motor command)" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 3 | 3 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"parseCommand keeps non-numeric option (raw motor command)" end time: Jun 23 12:12 CEST
"parseCommand keeps non-numeric option (raw motor command)" time elapsed: 00:00:00
----------------------------------------------------------
5/36 Testing: parseCommand on empty input
5/36 Test: parseCommand on empty input
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=parseCommand on empty input"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"parseCommand on empty input" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 2 | 2 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"parseCommand on empty input" end time: Jun 23 12:12 CEST
"parseCommand on empty input" time elapsed: 00:00:00
----------------------------------------------------------
6/36 Testing: ConfigLoader maps and defaults typed values
6/36 Test: ConfigLoader maps and defaults typed values
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=ConfigLoader maps and defaults typed values"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"ConfigLoader maps and defaults typed values" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 10 | 10 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"ConfigLoader maps and defaults typed values" end time: Jun 23 12:12 CEST
"ConfigLoader maps and defaults typed values" time elapsed: 00:00:00
----------------------------------------------------------
7/36 Testing: environment overrides file credentials
7/36 Test: environment overrides file credentials
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=environment overrides file credentials"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"environment overrides file credentials" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 1 | 1 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"environment overrides file credentials" end time: Jun 23 12:12 CEST
"environment overrides file credentials" time elapsed: 00:00:00
----------------------------------------------------------
8/36 Testing: ConfigLoader validates input
8/36 Test: ConfigLoader validates input
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=ConfigLoader validates input"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"ConfigLoader validates input" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 3 | 3 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"ConfigLoader validates input" end time: Jun 23 12:12 CEST
"ConfigLoader validates input" time elapsed: 00:00:00
----------------------------------------------------------
9/36 Testing: AxisMap converts degrees and counts with an offset
9/36 Test: AxisMap converts degrees and counts with an offset
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=AxisMap converts degrees and counts with an offset"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"AxisMap converts degrees and counts with an offset" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 4 | 4 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"AxisMap converts degrees and counts with an offset" end time: Jun 23 12:12 CEST
"AxisMap converts degrees and counts with an offset" time elapsed: 00:00:00
----------------------------------------------------------
10/36 Testing: AxisMap clamps to the soft range on the way out
10/36 Test: AxisMap clamps to the soft range on the way out
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=AxisMap clamps to the soft range on the way out"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"AxisMap clamps to the soft range on the way out" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 3 | 3 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"AxisMap clamps to the soft range on the way out" end time: Jun 23 12:12 CEST
"AxisMap clamps to the soft range on the way out" time elapsed: 00:00:00
----------------------------------------------------------
11/36 Testing: AxisMap supports a negative (flipped) direction
11/36 Test: AxisMap supports a negative (flipped) direction
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=AxisMap supports a negative (flipped) direction"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"AxisMap supports a negative (flipped) direction" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 2 | 2 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"AxisMap supports a negative (flipped) direction" end time: Jun 23 12:12 CEST
"AxisMap supports a negative (flipped) direction" time elapsed: 00:00:00
----------------------------------------------------------
12/36 Testing: AxisMap toDeg guards against a zero scale
12/36 Test: AxisMap toDeg guards against a zero scale
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=AxisMap toDeg guards against a zero scale"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"AxisMap toDeg guards against a zero scale" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 1 | 1 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"AxisMap toDeg guards against a zero scale" end time: Jun 23 12:12 CEST
"AxisMap toDeg guards against a zero scale" time elapsed: 00:00:00
----------------------------------------------------------
13/36 Testing: parseCategories maps names, all/none, and flags unknown tokens
13/36 Test: parseCategories maps names, all/none, and flags unknown tokens
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=parseCategories maps names\, all/none\, and flags unknown tokens"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"parseCategories maps names, all/none, and flags unknown tokens" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 12 | 12 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"parseCategories maps names, all/none, and flags unknown tokens" end time: Jun 23 12:12 CEST
"parseCategories maps names, all/none, and flags unknown tokens" time elapsed: 00:00:00
----------------------------------------------------------
14/36 Testing: catFromString round-trips and flags unknown
14/36 Test: catFromString round-trips and flags unknown
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=catFromString round-trips and flags unknown"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"catFromString round-trips and flags unknown" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 4 | 4 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"catFromString round-trips and flags unknown" end time: Jun 23 12:12 CEST
"catFromString round-trips and flags unknown" time elapsed: 00:00:00
----------------------------------------------------------
15/36 Testing: category enable/disable/set round-trip
15/36 Test: category enable/disable/set round-trip
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=category enable/disable/set round-trip"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"category enable/disable/set round-trip" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 9 | 9 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"category enable/disable/set round-trip" end time: Jun 23 12:12 CEST
"category enable/disable/set round-trip" time elapsed: 00:00:00
----------------------------------------------------------
16/36 Testing: LOG_TRACE_CAT gating is independent of the linear level
16/36 Test: LOG_TRACE_CAT gating is independent of the linear level
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=LOG_TRACE_CAT gating is independent of the linear level"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"LOG_TRACE_CAT gating is independent of the linear level" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 5 | 5 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"LOG_TRACE_CAT gating is independent of the linear level" end time: Jun 23 12:12 CEST
"LOG_TRACE_CAT gating is independent of the linear level" time elapsed: 00:00:00
----------------------------------------------------------
17/36 Testing: expandUser expands ~ and environment variables
17/36 Test: expandUser expands ~ and environment variables
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=expandUser expands ~ and environment variables"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"expandUser expands ~ and environment variables" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 6 | 6 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"expandUser expands ~ and environment variables" end time: Jun 23 12:12 CEST
"expandUser expands ~ and environment variables" time elapsed: 00:00:00
----------------------------------------------------------
18/36 Testing: configSearchPaths honours the CLI argument first
18/36 Test: configSearchPaths honours the CLI argument first
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=configSearchPaths honours the CLI argument first"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"configSearchPaths honours the CLI argument first" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 2 | 2 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"configSearchPaths honours the CLI argument first" end time: Jun 23 12:12 CEST
"configSearchPaths honours the CLI argument first" time elapsed: 00:00:00
----------------------------------------------------------
19/36 Testing: parseScanCsv reads waypoints and skips comments/blanks
19/36 Test: parseScanCsv reads waypoints and skips comments/blanks
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=parseScanCsv reads waypoints and skips comments/blanks"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"parseScanCsv reads waypoints and skips comments/blanks" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 4 | 4 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"parseScanCsv reads waypoints and skips comments/blanks" end time: Jun 23 12:12 CEST
"parseScanCsv reads waypoints and skips comments/blanks" time elapsed: 00:00:00
----------------------------------------------------------
20/36 Testing: parseScanCsv throws on a malformed line
20/36 Test: parseScanCsv throws on a malformed line
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=parseScanCsv throws on a malformed line"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"parseScanCsv throws on a malformed line" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 2 | 2 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"parseScanCsv throws on a malformed line" end time: Jun 23 12:12 CEST
"parseScanCsv throws on a malformed line" time elapsed: 00:00:00
----------------------------------------------------------
21/36 Testing: generateScanGrid produces yaw_intervals x pitch_levels points
21/36 Test: generateScanGrid produces yaw_intervals x pitch_levels points
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=generateScanGrid produces yaw_intervals x pitch_levels points"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"generateScanGrid produces yaw_intervals x pitch_levels points" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 6 | 6 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"generateScanGrid produces yaw_intervals x pitch_levels points" end time: Jun 23 12:12 CEST
"generateScanGrid produces yaw_intervals x pitch_levels points" time elapsed: 00:00:00
----------------------------------------------------------
22/36 Testing: ScanGrid cursor ping-pongs at both ends
22/36 Test: ScanGrid cursor ping-pongs at both ends
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=ScanGrid cursor ping-pongs at both ends"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"ScanGrid cursor ping-pongs at both ends" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 6 | 6 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"ScanGrid cursor ping-pongs at both ends" end time: Jun 23 12:12 CEST
"ScanGrid cursor ping-pongs at both ends" time elapsed: 00:00:00
----------------------------------------------------------
23/36 Testing: ScanGrid single point and empty are safe
23/36 Test: ScanGrid single point and empty are safe
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=ScanGrid single point and empty are safe"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"ScanGrid single point and empty are safe" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 2 | 2 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"ScanGrid single point and empty are safe" end time: Jun 23 12:12 CEST
"ScanGrid single point and empty are safe" time elapsed: 00:00:00
----------------------------------------------------------
24/36 Testing: CaptureScheduler sweeps the scan grid with MOVE + settle + trigger
24/36 Test: CaptureScheduler sweeps the scan grid with MOVE + settle + trigger
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=CaptureScheduler sweeps the scan grid with MOVE + settle + trigger"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"CaptureScheduler sweeps the scan grid with MOVE + settle + trigger" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 9 | 9 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"CaptureScheduler sweeps the scan grid with MOVE + settle + trigger" end time: Jun 23 12:12 CEST
"CaptureScheduler sweeps the scan grid with MOVE + settle + trigger" time elapsed: 00:00:00
----------------------------------------------------------
25/36 Testing: CaptureScheduler ControlCode 1 drives yaw to the target heading
25/36 Test: CaptureScheduler ControlCode 1 drives yaw to the target heading
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=CaptureScheduler ControlCode 1 drives yaw to the target heading"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"CaptureScheduler ControlCode 1 drives yaw to the target heading" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 3 | 3 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"CaptureScheduler ControlCode 1 drives yaw to the target heading" end time: Jun 23 12:12 CEST
"CaptureScheduler ControlCode 1 drives yaw to the target heading" time elapsed: 00:00:00
----------------------------------------------------------
26/36 Testing: CaptureScheduler clamps the target heading to the soft range
26/36 Test: CaptureScheduler clamps the target heading to the soft range
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=CaptureScheduler clamps the target heading to the soft range"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"CaptureScheduler clamps the target heading to the soft range" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 1 | 1 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"CaptureScheduler clamps the target heading to the soft range" end time: Jun 23 12:12 CEST
"CaptureScheduler clamps the target heading to the soft range" time elapsed: 00:00:00
----------------------------------------------------------
27/36 Testing: CaptureScheduler stays idle when capture inactive
27/36 Test: CaptureScheduler stays idle when capture inactive
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=CaptureScheduler stays idle when capture inactive"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"CaptureScheduler stays idle when capture inactive" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 2 | 2 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"CaptureScheduler stays idle when capture inactive" end time: Jun 23 12:12 CEST
"CaptureScheduler stays idle when capture inactive" time elapsed: 00:00:00
----------------------------------------------------------
28/36 Testing: parseTelemetryLine reads a two-axis ST line
28/36 Test: parseTelemetryLine reads a two-axis ST line
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=parseTelemetryLine reads a two-axis ST line"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"parseTelemetryLine reads a two-axis ST line" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 15 | 15 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"parseTelemetryLine reads a two-axis ST line" end time: Jun 23 12:12 CEST
"parseTelemetryLine reads a two-axis ST line" time elapsed: 00:00:00
----------------------------------------------------------
29/36 Testing: parseTelemetryLine reads a yaw-only ST line (no flags field)
29/36 Test: parseTelemetryLine reads a yaw-only ST line (no flags field)
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=parseTelemetryLine reads a yaw-only ST line (no flags field)"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"parseTelemetryLine reads a yaw-only ST line (no flags field)" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 5 | 5 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"parseTelemetryLine reads a yaw-only ST line (no flags field)" end time: Jun 23 12:12 CEST
"parseTelemetryLine reads a yaw-only ST line (no flags field)" time elapsed: 00:00:00
----------------------------------------------------------
30/36 Testing: parseTelemetryLine rejects non-ST and malformed lines
30/36 Test: parseTelemetryLine rejects non-ST and malformed lines
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=parseTelemetryLine rejects non-ST and malformed lines"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"parseTelemetryLine rejects non-ST and malformed lines" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 7 | 7 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"parseTelemetryLine rejects non-ST and malformed lines" end time: Jun 23 12:12 CEST
"parseTelemetryLine rejects non-ST and malformed lines" time elapsed: 00:00:00
----------------------------------------------------------
31/36 Testing: parseTelemetryLine tolerates trailing CR
31/36 Test: parseTelemetryLine tolerates trailing CR
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=parseTelemetryLine tolerates trailing CR"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"parseTelemetryLine tolerates trailing CR" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 2 | 2 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"parseTelemetryLine tolerates trailing CR" end time: Jun 23 12:12 CEST
"parseTelemetryLine tolerates trailing CR" time elapsed: 00:00:00
----------------------------------------------------------
32/36 Testing: axisStateLabel maps every state
32/36 Test: axisStateLabel maps every state
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=axisStateLabel maps every state"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"axisStateLabel maps every state" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 6 | 6 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"axisStateLabel maps every state" end time: Jun 23 12:12 CEST
"axisStateLabel maps every state" time elapsed: 00:00:00
----------------------------------------------------------
33/36 Testing: axisStateColor signals health
33/36 Test: axisStateColor signals health
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=axisStateColor signals health"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"axisStateColor signals health" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 6 | 6 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"axisStateColor signals health" end time: Jun 23 12:12 CEST
"axisStateColor signals health" time elapsed: 00:00:00
----------------------------------------------------------
34/36 Testing: formatDegrees: one decimal, sign preserved, degree sign appended
34/36 Test: formatDegrees: one decimal, sign preserved, degree sign appended
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=formatDegrees: one decimal\, sign preserved\, degree sign appended"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"formatDegrees: one decimal, sign preserved, degree sign appended" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 3 | 3 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"formatDegrees: one decimal, sign preserved, degree sign appended" end time: Jun 23 12:12 CEST
"formatDegrees: one decimal, sign preserved, degree sign appended" time elapsed: 00:00:00
----------------------------------------------------------
35/36 Testing: formatTimeAgo: buckets and the never case
35/36 Test: formatTimeAgo: buckets and the never case
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=formatTimeAgo: buckets and the never case"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"formatTimeAgo: buckets and the never case" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 5 | 5 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"formatTimeAgo: buckets and the never case" end time: Jun 23 12:12 CEST
"formatTimeAgo: buckets and the never case" time elapsed: 00:00:00
----------------------------------------------------------
36/36 Testing: pendingSensorsView: all fields absent until drivers land
36/36 Test: pendingSensorsView: all fields absent until drivers land
Command: "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests" "--test-case=pendingSensorsView: all fields absent until drivers land"
Directory: /home/pedro/code/fwt_2a/software/build-notui/tests
"pendingSensorsView: all fields absent until drivers land" start time: Jun 23 12:12 CEST
Output:
----------------------------------------------------------
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 1 | 1 passed | 0 failed | 35 skipped
[doctest] assertions: 15 | 15 passed | 0 failed |
[doctest] Status: SUCCESS!
<end of output>
Test time = 0.00 sec
----------------------------------------------------------
Test Passed.
"pendingSensorsView: all fields absent until drivers land" end time: Jun 23 12:12 CEST
"pendingSensorsView: all fields absent until drivers land" time elapsed: 00:00:00
----------------------------------------------------------
End testing: Jun 23 12:12 CEST

View File

@ -1,6 +0,0 @@
# CMake generated Testfile for
# Source directory: /home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src
# Build directory: /home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-build
#
# This file includes the relevant testing commands required for
# testing this directory and lists subdirectories to be tested as well.

View File

@ -1,242 +0,0 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 4.3
# Default target executed when no arguments are given to make.
default_target: all
.PHONY : default_target
# Allow only one "make -f Makefile2" at a time, but pass parallelism.
.NOTPARALLEL:
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Disable VCS-based implicit rules.
% : %,v
# Disable VCS-based implicit rules.
% : RCS/%
# Disable VCS-based implicit rules.
% : RCS/%,v
# Disable VCS-based implicit rules.
% : SCCS/s.%
# Disable VCS-based implicit rules.
% : s.%
.SUFFIXES: .hpux_make_needs_suffix_list
# Command-line flag to silence nested $(MAKE).
$(VERBOSE)MAKESILENT = -s
#Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E rm -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/pedro/code/fwt_2a/software
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/pedro/code/fwt_2a/software/build-notui
#=============================================================================
# Targets provided globally by CMake.
# Special rule for the target test
test:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running tests..."
/usr/bin/ctest $(ARGS)
.PHONY : test
# Special rule for the target test
test/fast: test
.PHONY : test/fast
# Special rule for the target edit_cache
edit_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..."
/usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : edit_cache
# Special rule for the target edit_cache
edit_cache/fast: edit_cache
.PHONY : edit_cache/fast
# Special rule for the target rebuild_cache
rebuild_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..."
/usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : rebuild_cache
# Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache
.PHONY : rebuild_cache/fast
# Special rule for the target list_install_components
list_install_components:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\""
.PHONY : list_install_components
# Special rule for the target list_install_components
list_install_components/fast: list_install_components
.PHONY : list_install_components/fast
# Special rule for the target install
install: preinstall
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..."
/usr/bin/cmake -P cmake_install.cmake
.PHONY : install
# Special rule for the target install
install/fast: preinstall/fast
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..."
/usr/bin/cmake -P cmake_install.cmake
.PHONY : install/fast
# Special rule for the target install/local
install/local: preinstall
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..."
/usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
.PHONY : install/local
# Special rule for the target install/local
install/local/fast: preinstall/fast
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..."
/usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
.PHONY : install/local/fast
# Special rule for the target install/strip
install/strip: preinstall
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..."
/usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
.PHONY : install/strip
# Special rule for the target install/strip
install/strip/fast: preinstall/fast
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..."
/usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
.PHONY : install/strip/fast
# The main all target
all: cmake_check_build_system
cd /home/pedro/code/fwt_2a/software/build-notui && $(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-notui/CMakeFiles /home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-build//CMakeFiles/progress.marks
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/doctest-build/all
$(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-notui/CMakeFiles 0
.PHONY : all
# The main clean target
clean:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/doctest-build/clean
.PHONY : clean
# The main clean target
clean/fast: clean
.PHONY : clean/fast
# Prepare targets for installation.
preinstall: all
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/doctest-build/preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/doctest-build/preinstall
.PHONY : preinstall/fast
# clear depends
depend:
cd /home/pedro/code/fwt_2a/software/build-notui && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
# Convenience name for target.
_deps/doctest-build/CMakeFiles/doctest_with_main.dir/rule:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/doctest-build/CMakeFiles/doctest_with_main.dir/rule
.PHONY : _deps/doctest-build/CMakeFiles/doctest_with_main.dir/rule
# Convenience name for target.
doctest_with_main: _deps/doctest-build/CMakeFiles/doctest_with_main.dir/rule
.PHONY : doctest_with_main
# fast build rule for target.
doctest_with_main/fast:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f _deps/doctest-build/CMakeFiles/doctest_with_main.dir/build.make _deps/doctest-build/CMakeFiles/doctest_with_main.dir/build
.PHONY : doctest_with_main/fast
doctest/parts/doctest.o: doctest/parts/doctest.cpp.o
.PHONY : doctest/parts/doctest.o
# target to build an object file
doctest/parts/doctest.cpp.o:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f _deps/doctest-build/CMakeFiles/doctest_with_main.dir/build.make _deps/doctest-build/CMakeFiles/doctest_with_main.dir/doctest/parts/doctest.cpp.o
.PHONY : doctest/parts/doctest.cpp.o
doctest/parts/doctest.i: doctest/parts/doctest.cpp.i
.PHONY : doctest/parts/doctest.i
# target to preprocess a source file
doctest/parts/doctest.cpp.i:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f _deps/doctest-build/CMakeFiles/doctest_with_main.dir/build.make _deps/doctest-build/CMakeFiles/doctest_with_main.dir/doctest/parts/doctest.cpp.i
.PHONY : doctest/parts/doctest.cpp.i
doctest/parts/doctest.s: doctest/parts/doctest.cpp.s
.PHONY : doctest/parts/doctest.s
# target to generate assembly for a file
doctest/parts/doctest.cpp.s:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f _deps/doctest-build/CMakeFiles/doctest_with_main.dir/build.make _deps/doctest-build/CMakeFiles/doctest_with_main.dir/doctest/parts/doctest.cpp.s
.PHONY : doctest/parts/doctest.cpp.s
# Help Target
help:
@echo "The following are some of the valid targets for this Makefile:"
@echo "... all (the default if no target is provided)"
@echo "... clean"
@echo "... depend"
@echo "... edit_cache"
@echo "... install"
@echo "... install/local"
@echo "... install/strip"
@echo "... list_install_components"
@echo "... rebuild_cache"
@echo "... test"
@echo "... doctest_with_main"
@echo "... doctest/parts/doctest.o"
@echo "... doctest/parts/doctest.i"
@echo "... doctest/parts/doctest.s"
.PHONY : help
#=============================================================================
# Special targets to cleanup operation of make.
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
cd /home/pedro/code/fwt_2a/software/build-notui && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system

View File

@ -1,6 +0,0 @@
if(NOT TARGET doctest::doctest)
# Provide path for scripts
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
include("${CMAKE_CURRENT_LIST_DIR}/doctestTargets.cmake")
endif()

View File

@ -1,65 +0,0 @@
# This is a basic version file for the Config-mode of find_package().
# It is used by write_basic_package_version_file() as input file for configure_file()
# to create a version-file which can be installed along a config.cmake file.
#
# The created file sets PACKAGE_VERSION_EXACT if the current version string and
# the requested version string are exactly the same and it sets
# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version,
# but only if the requested major version is the same as the current one.
# The variable CVF_VERSION must be set before calling configure_file().
set(PACKAGE_VERSION "2.4.11")
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
if("2.4.11" MATCHES "^([0-9]+)\\.")
set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
endif()
else()
set(CVF_VERSION_MAJOR "2.4.11")
endif()
if(PACKAGE_FIND_VERSION_RANGE)
# both endpoints of the range must have the expected major version
math (EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1")
if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR)
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT)))
set(PACKAGE_VERSION_COMPATIBLE FALSE)
elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX)
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX)))
set(PACKAGE_VERSION_COMPATIBLE TRUE)
else()
set(PACKAGE_VERSION_COMPATIBLE FALSE)
endif()
else()
if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR)
set(PACKAGE_VERSION_COMPATIBLE TRUE)
else()
set(PACKAGE_VERSION_COMPATIBLE FALSE)
endif()
if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()
endif()
# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "" STREQUAL "")
return()
endif()
# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "")
math(EXPR installedBits " * 8")
set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
set(PACKAGE_VERSION_UNSUITABLE TRUE)
endif()

@ -1 +0,0 @@
Subproject commit ae7a13539fb71f270b87eb2e874fbac80bc8dda2

View File

@ -1,42 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.
cmake_minimum_required(VERSION 4.3.3)
# Reject any attempt to use a toolchain file. We must not use one because
# we could be downloading it here. If the CMAKE_TOOLCHAIN_FILE environment
# variable is set, the cache variable will have been initialized from it.
unset(CMAKE_TOOLCHAIN_FILE CACHE)
unset(ENV{CMAKE_TOOLCHAIN_FILE})
# We name the project and the target for the ExternalProject_Add() call
# to something that will highlight to the user what we are working on if
# something goes wrong and an error message is produced.
project(doctest-populate NONE)
# Pass through things we've already detected in the main project to avoid
# paying the cost of redetecting them again in ExternalProject_Add()
set(GIT_EXECUTABLE [==[/usr/bin/git]==])
set(Git_VERSION [==[2.54.0]==])
set_property(GLOBAL PROPERTY _CMAKE_FindGit_GIT_EXECUTABLE_VERSION
[==[/usr/bin/git;2.54.0]==]
)
include(ExternalProject)
ExternalProject_Add(doctest-populate
"UPDATE_DISCONNECTED" "False" "GIT_REPOSITORY" "https://github.com/doctest/doctest.git" "EXTERNALPROJECT_INTERNAL_ARGUMENT_SEPARATOR" "GIT_TAG" "v2.4.11" "GIT_SHALLOW" "TRUE"
SOURCE_DIR "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
BINARY_DIR "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-build"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
USES_TERMINAL_DOWNLOAD YES
USES_TERMINAL_UPDATE YES
USES_TERMINAL_PATCH YES
)

View File

@ -1,162 +0,0 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 4.3
# Default target executed when no arguments are given to make.
default_target: all
.PHONY : default_target
# Allow only one "make -f Makefile2" at a time, but pass parallelism.
.NOTPARALLEL:
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Disable VCS-based implicit rules.
% : %,v
# Disable VCS-based implicit rules.
% : RCS/%
# Disable VCS-based implicit rules.
% : RCS/%,v
# Disable VCS-based implicit rules.
% : SCCS/s.%
# Disable VCS-based implicit rules.
% : s.%
.SUFFIXES: .hpux_make_needs_suffix_list
# Command-line flag to silence nested $(MAKE).
$(VERBOSE)MAKESILENT = -s
#Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E rm -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild
#=============================================================================
# Targets provided globally by CMake.
# Special rule for the target edit_cache
edit_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..."
/usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : edit_cache
# Special rule for the target edit_cache
edit_cache/fast: edit_cache
.PHONY : edit_cache/fast
# Special rule for the target rebuild_cache
rebuild_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..."
/usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : rebuild_cache
# Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache
.PHONY : rebuild_cache/fast
# The main all target
all: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/CMakeFiles /home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild//CMakeFiles/progress.marks
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all
$(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/CMakeFiles 0
.PHONY : all
# The main codegen target
codegen: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/CMakeFiles /home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild//CMakeFiles/progress.marks
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 codegen
$(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/CMakeFiles 0
.PHONY : codegen
# The main clean target
clean:
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean
.PHONY : clean
# The main clean target
clean/fast: clean
.PHONY : clean/fast
# Prepare targets for installation.
preinstall: all
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast:
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall/fast
# clear depends
depend:
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
#=============================================================================
# Target rules for targets named doctest-populate
# Build rule for target.
doctest-populate: cmake_check_build_system
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 doctest-populate
.PHONY : doctest-populate
# fast build rule for target.
doctest-populate/fast:
$(MAKE) $(MAKESILENT) -f CMakeFiles/doctest-populate.dir/build.make CMakeFiles/doctest-populate.dir/build
.PHONY : doctest-populate/fast
# Help Target
help:
@echo "The following are some of the valid targets for this Makefile:"
@echo "... all (the default if no target is provided)"
@echo "... clean"
@echo "... depend"
@echo "... codegen"
@echo "... edit_cache"
@echo "... rebuild_cache"
@echo "... doctest-populate"
.PHONY : help
#=============================================================================
# Special targets to cleanup operation of make.
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system

View File

@ -1,15 +0,0 @@
# This is a generated file and its contents are an internal implementation detail.
# The download step will be re-executed if anything in this file changes.
# No other meaning or use of this file is supported.
method=git
command=/usr/bin/cmake;-DCMAKE_MESSAGE_LOG_LEVEL=VERBOSE;-P;/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/tmp/doctest-populate-gitclone.cmake
source_dir=/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src
work_dir=/home/pedro/code/fwt_2a/software/build-notui/_deps
repository=https://github.com/doctest/doctest.git
remote=origin
init_submodules=TRUE
recurse_submodules=--recursive
submodules=
CMP0097=NEW

View File

@ -1,15 +0,0 @@
# This is a generated file and its contents are an internal implementation detail.
# The download step will be re-executed if anything in this file changes.
# No other meaning or use of this file is supported.
method=git
command=/usr/bin/cmake;-DCMAKE_MESSAGE_LOG_LEVEL=VERBOSE;-P;/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/tmp/doctest-populate-gitclone.cmake
source_dir=/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src
work_dir=/home/pedro/code/fwt_2a/software/build-notui/_deps
repository=https://github.com/doctest/doctest.git
remote=origin
init_submodules=TRUE
recurse_submodules=--recursive
submodules=
CMP0097=NEW

View File

@ -1,6 +0,0 @@
# This is a generated file and its contents are an internal implementation detail.
# The update step will be re-executed if anything in this file changes.
# No other meaning or use of this file is supported.
command=
work_dir=

View File

@ -1,7 +0,0 @@
# This is a generated file and its contents are an internal implementation detail.
# The patch step will be re-executed if anything in this file changes.
# No other meaning or use of this file is supported.
command (connected)=/usr/bin/cmake;-Dcan_fetch=YES;-DCMAKE_MESSAGE_LOG_LEVEL=VERBOSE;-P;/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/tmp/doctest-populate-gitupdate.cmake
command (disconnected)=/usr/bin/cmake;-Dcan_fetch=NO;-DCMAKE_MESSAGE_LOG_LEVEL=VERBOSE;-P;/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/tmp/doctest-populate-gitupdate.cmake
work_dir=/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src

View File

@ -1,87 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.
cmake_minimum_required(VERSION ${CMAKE_VERSION}) # this file comes with cmake
if(EXISTS "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/src/doctest-populate-stamp/doctest-populate-gitclone-lastrun.txt" AND EXISTS "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/src/doctest-populate-stamp/doctest-populate-gitinfo.txt" AND
"/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/src/doctest-populate-stamp/doctest-populate-gitclone-lastrun.txt" IS_NEWER_THAN "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/src/doctest-populate-stamp/doctest-populate-gitinfo.txt")
message(VERBOSE
"Avoiding repeated git clone, stamp file is up to date: "
"'/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/src/doctest-populate-stamp/doctest-populate-gitclone-lastrun.txt'"
)
return()
endif()
# Even at VERBOSE level, we don't want to see the commands executed, but
# enabling them to be shown for DEBUG may be useful to help diagnose problems.
cmake_language(GET_MESSAGE_LOG_LEVEL active_log_level)
if(active_log_level MATCHES "DEBUG|TRACE")
set(maybe_show_command COMMAND_ECHO STDOUT)
else()
set(maybe_show_command "")
endif()
execute_process(
COMMAND ${CMAKE_COMMAND} -E rm -rf "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
RESULT_VARIABLE error_code
${maybe_show_command}
)
if(error_code)
message(FATAL_ERROR "Failed to remove directory: '/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src'")
endif()
# try the clone 3 times in case there is an odd git clone issue
set(error_code 1)
set(number_of_tries 0)
while(error_code AND number_of_tries LESS 3)
execute_process(
COMMAND "/usr/bin/git"
clone --no-checkout --depth 1 --no-single-branch --config "advice.detachedHead=false" "https://github.com/doctest/doctest.git" "doctest-src"
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps"
RESULT_VARIABLE error_code
${maybe_show_command}
)
math(EXPR number_of_tries "${number_of_tries} + 1")
endwhile()
if(number_of_tries GREATER 1)
message(NOTICE "Had to git clone more than once: ${number_of_tries} times.")
endif()
if(error_code)
message(FATAL_ERROR "Failed to clone repository: 'https://github.com/doctest/doctest.git'")
endif()
execute_process(
COMMAND "/usr/bin/git"
checkout "v2.4.11" --
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
RESULT_VARIABLE error_code
${maybe_show_command}
)
if(error_code)
message(FATAL_ERROR "Failed to checkout tag: 'v2.4.11'")
endif()
set(init_submodules TRUE)
if(init_submodules)
execute_process(
COMMAND "/usr/bin/git"
submodule update --recursive --init
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
RESULT_VARIABLE error_code
${maybe_show_command}
)
endif()
if(error_code)
message(FATAL_ERROR "Failed to update submodules in: '/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src'")
endif()
# Complete success, update the script-last-run stamp file:
#
execute_process(
COMMAND ${CMAKE_COMMAND} -E copy "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/src/doctest-populate-stamp/doctest-populate-gitinfo.txt" "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/src/doctest-populate-stamp/doctest-populate-gitclone-lastrun.txt"
RESULT_VARIABLE error_code
${maybe_show_command}
)
if(error_code)
message(FATAL_ERROR "Failed to copy script-last-run stamp file: '/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/src/doctest-populate-stamp/doctest-populate-gitclone-lastrun.txt'")
endif()

View File

@ -1,317 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.
cmake_minimum_required(VERSION ${CMAKE_VERSION}) # this file comes with cmake
# Even at VERBOSE level, we don't want to see the commands executed, but
# enabling them to be shown for DEBUG may be useful to help diagnose problems.
cmake_language(GET_MESSAGE_LOG_LEVEL active_log_level)
if(active_log_level MATCHES "DEBUG|TRACE")
set(maybe_show_command COMMAND_ECHO STDOUT)
else()
set(maybe_show_command "")
endif()
function(do_fetch)
message(VERBOSE "Fetching latest from the remote origin")
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git fetch --tags --force "origin"
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
COMMAND_ERROR_IS_FATAL LAST
${maybe_show_command}
)
endfunction()
function(get_hash_for_ref ref out_var err_var)
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git rev-parse "${ref}^0"
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
RESULT_VARIABLE error_code
OUTPUT_VARIABLE ref_hash
ERROR_VARIABLE error_msg
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(error_code)
set(${out_var} "" PARENT_SCOPE)
else()
set(${out_var} "${ref_hash}" PARENT_SCOPE)
endif()
set(${err_var} "${error_msg}" PARENT_SCOPE)
endfunction()
get_hash_for_ref(HEAD head_sha error_msg)
if(head_sha STREQUAL "")
message(FATAL_ERROR "Failed to get the hash for HEAD:\n${error_msg}")
endif()
if("${can_fetch}" STREQUAL "")
set(can_fetch "YES")
endif()
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git show-ref "v2.4.11"
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
OUTPUT_VARIABLE show_ref_output
)
if(show_ref_output MATCHES "^[a-z0-9]+[ \\t]+refs/remotes/")
# Given a full remote/branch-name and we know about it already. Since
# branches can move around, we should always fetch, if permitted.
if(can_fetch)
do_fetch()
endif()
set(checkout_name "v2.4.11")
elseif(show_ref_output MATCHES "^[a-z0-9]+[ \\t]+refs/tags/")
# Given a tag name that we already know about. We don't know if the tag we
# have matches the remote though (tags can move), so we should fetch. As a
# special case to preserve backward compatibility, if we are already at the
# same commit as the tag we hold locally, don't do a fetch and assume the tag
# hasn't moved on the remote.
# FIXME: We should provide an option to always fetch for this case
get_hash_for_ref("v2.4.11" tag_sha error_msg)
if(tag_sha STREQUAL head_sha)
message(VERBOSE "Already at requested tag: v2.4.11")
return()
endif()
if(can_fetch)
do_fetch()
endif()
set(checkout_name "v2.4.11")
elseif(show_ref_output MATCHES "^[a-z0-9]+[ \\t]+refs/heads/")
# Given a branch name without any remote and we already have a branch by that
# name. We might already have that branch checked out or it might be a
# different branch. It isn't fully safe to use a bare branch name without the
# remote, so do a fetch (if allowed) and replace the ref with one that
# includes the remote.
if(can_fetch)
do_fetch()
endif()
set(checkout_name "origin/v2.4.11")
else()
get_hash_for_ref("v2.4.11" tag_sha error_msg)
if(tag_sha STREQUAL head_sha)
# Have the right commit checked out already
message(VERBOSE "Already at requested ref: ${tag_sha}")
return()
elseif(tag_sha STREQUAL "")
# We don't know about this ref yet, so we have no choice but to fetch.
if(NOT can_fetch)
message(FATAL_ERROR
"Requested git ref \"v2.4.11\" is not present locally, and not "
"allowed to contact remote due to UPDATE_DISCONNECTED setting."
)
endif()
# We deliberately swallow any error message at the default log level
# because it can be confusing for users to see a failed git command.
# That failure is being handled here, so it isn't an error.
if(NOT error_msg STREQUAL "")
message(DEBUG "${error_msg}")
endif()
do_fetch()
set(checkout_name "v2.4.11")
else()
# We have the commit, so we know we were asked to find a commit hash
# (otherwise it would have been handled further above), but we don't
# have that commit checked out yet. We don't need to fetch from the remote.
set(checkout_name "v2.4.11")
if(NOT error_msg STREQUAL "")
message(WARNING "${error_msg}")
endif()
endif()
endif()
set(git_update_strategy "REBASE")
if(git_update_strategy STREQUAL "")
# Backward compatibility requires REBASE as the default behavior
set(git_update_strategy REBASE)
endif()
if(git_update_strategy MATCHES "^REBASE(_CHECKOUT)?$")
# Asked to potentially try to rebase first, maybe with fallback to checkout.
# We can't if we aren't already on a branch and we shouldn't if that local
# branch isn't tracking the one we want to checkout.
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git symbolic-ref -q HEAD
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
OUTPUT_VARIABLE current_branch
OUTPUT_STRIP_TRAILING_WHITESPACE
# Don't test for an error. If this isn't a branch, we get a non-zero error
# code but empty output.
)
if(current_branch STREQUAL "")
# Not on a branch, checkout is the only sensible option since any rebase
# would always fail (and backward compatibility requires us to checkout in
# this situation)
set(git_update_strategy CHECKOUT)
else()
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git for-each-ref "--format=%(upstream:short)" "${current_branch}"
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
OUTPUT_VARIABLE upstream_branch
OUTPUT_STRIP_TRAILING_WHITESPACE
COMMAND_ERROR_IS_FATAL ANY # There is no error if no upstream is set
)
if(NOT upstream_branch STREQUAL checkout_name)
# Not safe to rebase when asked to checkout a different branch to the one
# we are tracking. If we did rebase, we could end up with arbitrary
# commits added to the ref we were asked to checkout if the current local
# branch happens to be able to rebase onto the target branch. There would
# be no error message and the user wouldn't know this was occurring.
set(git_update_strategy CHECKOUT)
endif()
endif()
elseif(NOT git_update_strategy STREQUAL "CHECKOUT")
message(FATAL_ERROR "Unsupported git update strategy: ${git_update_strategy}")
endif()
# Check if stash is needed
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git status --porcelain
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
RESULT_VARIABLE error_code
OUTPUT_VARIABLE repo_status
)
if(error_code)
message(FATAL_ERROR "Failed to get the status")
endif()
string(LENGTH "${repo_status}" need_stash)
# If not in clean state, stash changes in order to be able to perform a
# rebase or checkout without losing those changes permanently
if(need_stash)
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git stash save --quiet;--include-untracked
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
COMMAND_ERROR_IS_FATAL ANY
${maybe_show_command}
)
endif()
if(git_update_strategy STREQUAL "CHECKOUT")
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git checkout "${checkout_name}"
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
COMMAND_ERROR_IS_FATAL ANY
${maybe_show_command}
)
else()
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git rebase "${checkout_name}"
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
RESULT_VARIABLE error_code
OUTPUT_VARIABLE rebase_output
ERROR_VARIABLE rebase_output
)
if(error_code)
# Rebase failed, undo the rebase attempt before continuing
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git rebase --abort
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
${maybe_show_command}
)
if(NOT git_update_strategy STREQUAL "REBASE_CHECKOUT")
# Not allowed to do a checkout as a fallback, so cannot proceed
if(need_stash)
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git stash pop --index --quiet
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
${maybe_show_command}
)
endif()
message(FATAL_ERROR "\nFailed to rebase in: '/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src'."
"\nOutput from the attempted rebase follows:"
"\n${rebase_output}"
"\n\nYou will have to resolve the conflicts manually")
endif()
# Fall back to checkout. We create an annotated tag so that the user
# can manually inspect the situation and revert if required.
# We can't log the failed rebase output because MSVC sees it and
# intervenes, causing the build to fail even though it completes.
# Write it to a file instead.
string(TIMESTAMP tag_timestamp "%Y%m%dT%H%M%S" UTC)
set(tag_name _cmake_ExternalProject_moved_from_here_${tag_timestamp}Z)
set(error_log_file ${CMAKE_CURRENT_LIST_DIR}/rebase_error_${tag_timestamp}Z.log)
file(WRITE ${error_log_file} "${rebase_output}")
message(WARNING "Rebase failed, output has been saved to ${error_log_file}"
"\nFalling back to checkout, previous commit tagged as ${tag_name}")
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git tag -a
-m "ExternalProject attempting to move from here to ${checkout_name}"
${tag_name}
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
COMMAND_ERROR_IS_FATAL ANY
${maybe_show_command}
)
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git checkout "${checkout_name}"
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
COMMAND_ERROR_IS_FATAL ANY
${maybe_show_command}
)
endif()
endif()
if(need_stash)
# Put back the stashed changes
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git stash pop --index --quiet
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
RESULT_VARIABLE error_code
${maybe_show_command}
)
if(error_code)
# Stash pop --index failed: Try again dropping the index
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git reset --hard --quiet
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
${maybe_show_command}
)
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git stash pop --quiet
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
RESULT_VARIABLE error_code
${maybe_show_command}
)
if(error_code)
# Stash pop failed: Restore previous state.
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git reset --hard --quiet ${head_sha}
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
${maybe_show_command}
)
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git stash pop --index --quiet
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
${maybe_show_command}
)
message(FATAL_ERROR "\nFailed to unstash changes in: '/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src'."
"\nYou will have to resolve the conflicts manually")
endif()
endif()
endif()
set(init_submodules "TRUE")
if(init_submodules)
execute_process(
COMMAND "/usr/bin/git"
--git-dir=.git
submodule update --recursive --init
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src"
COMMAND_ERROR_IS_FATAL ANY
${maybe_show_command}
)
endif()

View File

@ -1,27 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.
cmake_minimum_required(VERSION ${CMAKE_VERSION}) # this file comes with cmake
# If CMAKE_DISABLE_SOURCE_CHANGES is set to true and the source directory is an
# existing directory in our source tree, calling file(MAKE_DIRECTORY) on it
# would cause a fatal error, even though it would be a no-op.
if(NOT EXISTS "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src")
file(MAKE_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-src")
endif()
file(MAKE_DIRECTORY
"/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-build"
"/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix"
"/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/tmp"
"/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/src/doctest-populate-stamp"
"/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/src"
"/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/src/doctest-populate-stamp"
)
set(configSubDirs )
foreach(subDir IN LISTS configSubDirs)
file(MAKE_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/src/doctest-populate-stamp/${subDir}")
endforeach()
if(cfgdir)
file(MAKE_DIRECTORY "/home/pedro/code/fwt_2a/software/build-notui/_deps/doctest-subbuild/doctest-populate-prefix/src/doctest-populate-stamp${cfgdir}") # cfgdir has leading slash
endif()

Binary file not shown.

Binary file not shown.

View File

@ -1,8 +0,0 @@
# CMake generated Testfile for
# Source directory: /home/pedro/code/fwt_2a/software/tests
# Build directory: /home/pedro/code/fwt_2a/software/build-notui/tests
#
# This file includes the relevant testing commands required for
# testing this directory and lists subdirectories to be tested as well.
include("/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests_include-b858cb2.cmake")
subdirs("../_deps/doctest-build")

View File

@ -1,485 +0,0 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 4.3
# Default target executed when no arguments are given to make.
default_target: all
.PHONY : default_target
# Allow only one "make -f Makefile2" at a time, but pass parallelism.
.NOTPARALLEL:
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Disable VCS-based implicit rules.
% : %,v
# Disable VCS-based implicit rules.
% : RCS/%
# Disable VCS-based implicit rules.
% : RCS/%,v
# Disable VCS-based implicit rules.
% : SCCS/s.%
# Disable VCS-based implicit rules.
% : s.%
.SUFFIXES: .hpux_make_needs_suffix_list
# Command-line flag to silence nested $(MAKE).
$(VERBOSE)MAKESILENT = -s
#Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E rm -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/pedro/code/fwt_2a/software
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/pedro/code/fwt_2a/software/build-notui
#=============================================================================
# Targets provided globally by CMake.
# Special rule for the target test
test:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running tests..."
/usr/bin/ctest $(ARGS)
.PHONY : test
# Special rule for the target test
test/fast: test
.PHONY : test/fast
# Special rule for the target edit_cache
edit_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..."
/usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : edit_cache
# Special rule for the target edit_cache
edit_cache/fast: edit_cache
.PHONY : edit_cache/fast
# Special rule for the target rebuild_cache
rebuild_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..."
/usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : rebuild_cache
# Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache
.PHONY : rebuild_cache/fast
# Special rule for the target list_install_components
list_install_components:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Available install components are: \"Unspecified\""
.PHONY : list_install_components
# Special rule for the target list_install_components
list_install_components/fast: list_install_components
.PHONY : list_install_components/fast
# Special rule for the target install
install: preinstall
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..."
/usr/bin/cmake -P cmake_install.cmake
.PHONY : install
# Special rule for the target install
install/fast: preinstall/fast
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Install the project..."
/usr/bin/cmake -P cmake_install.cmake
.PHONY : install/fast
# Special rule for the target install/local
install/local: preinstall
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..."
/usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
.PHONY : install/local
# Special rule for the target install/local
install/local/fast: preinstall/fast
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing only the local directory..."
/usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
.PHONY : install/local/fast
# Special rule for the target install/strip
install/strip: preinstall
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..."
/usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
.PHONY : install/strip
# Special rule for the target install/strip
install/strip/fast: preinstall/fast
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Installing the project stripped..."
/usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
.PHONY : install/strip/fast
# The main all target
all: cmake_check_build_system
cd /home/pedro/code/fwt_2a/software/build-notui && $(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-notui/CMakeFiles /home/pedro/code/fwt_2a/software/build-notui/tests//CMakeFiles/progress.marks
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/all
$(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-notui/CMakeFiles 0
.PHONY : all
# The main clean target
clean:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/clean
.PHONY : clean
# The main clean target
clean/fast: clean
.PHONY : clean/fast
# Prepare targets for installation.
preinstall: all
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/preinstall
.PHONY : preinstall/fast
# clear depends
depend:
cd /home/pedro/code/fwt_2a/software/build-notui && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
# Convenience name for target.
tests/CMakeFiles/fgc_tests.dir/rule:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 tests/CMakeFiles/fgc_tests.dir/rule
.PHONY : tests/CMakeFiles/fgc_tests.dir/rule
# Convenience name for target.
fgc_tests: tests/CMakeFiles/fgc_tests.dir/rule
.PHONY : fgc_tests
# fast build rule for target.
fgc_tests/fast:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/build
.PHONY : fgc_tests/fast
doctest_main.o: doctest_main.cpp.o
.PHONY : doctest_main.o
# target to build an object file
doctest_main.cpp.o:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/doctest_main.cpp.o
.PHONY : doctest_main.cpp.o
doctest_main.i: doctest_main.cpp.i
.PHONY : doctest_main.i
# target to preprocess a source file
doctest_main.cpp.i:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/doctest_main.cpp.i
.PHONY : doctest_main.cpp.i
doctest_main.s: doctest_main.cpp.s
.PHONY : doctest_main.s
# target to generate assembly for a file
doctest_main.cpp.s:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/doctest_main.cpp.s
.PHONY : doctest_main.cpp.s
test_command.o: test_command.cpp.o
.PHONY : test_command.o
# target to build an object file
test_command.cpp.o:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_command.cpp.o
.PHONY : test_command.cpp.o
test_command.i: test_command.cpp.i
.PHONY : test_command.i
# target to preprocess a source file
test_command.cpp.i:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_command.cpp.i
.PHONY : test_command.cpp.i
test_command.s: test_command.cpp.s
.PHONY : test_command.s
# target to generate assembly for a file
test_command.cpp.s:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_command.cpp.s
.PHONY : test_command.cpp.s
test_config.o: test_config.cpp.o
.PHONY : test_config.o
# target to build an object file
test_config.cpp.o:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_config.cpp.o
.PHONY : test_config.cpp.o
test_config.i: test_config.cpp.i
.PHONY : test_config.i
# target to preprocess a source file
test_config.cpp.i:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_config.cpp.i
.PHONY : test_config.cpp.i
test_config.s: test_config.cpp.s
.PHONY : test_config.s
# target to generate assembly for a file
test_config.cpp.s:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_config.cpp.s
.PHONY : test_config.cpp.s
test_geometry.o: test_geometry.cpp.o
.PHONY : test_geometry.o
# target to build an object file
test_geometry.cpp.o:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_geometry.cpp.o
.PHONY : test_geometry.cpp.o
test_geometry.i: test_geometry.cpp.i
.PHONY : test_geometry.i
# target to preprocess a source file
test_geometry.cpp.i:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_geometry.cpp.i
.PHONY : test_geometry.cpp.i
test_geometry.s: test_geometry.cpp.s
.PHONY : test_geometry.s
# target to generate assembly for a file
test_geometry.cpp.s:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_geometry.cpp.s
.PHONY : test_geometry.cpp.s
test_logger.o: test_logger.cpp.o
.PHONY : test_logger.o
# target to build an object file
test_logger.cpp.o:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_logger.cpp.o
.PHONY : test_logger.cpp.o
test_logger.i: test_logger.cpp.i
.PHONY : test_logger.i
# target to preprocess a source file
test_logger.cpp.i:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_logger.cpp.i
.PHONY : test_logger.cpp.i
test_logger.s: test_logger.cpp.s
.PHONY : test_logger.s
# target to generate assembly for a file
test_logger.cpp.s:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_logger.cpp.s
.PHONY : test_logger.cpp.s
test_paths.o: test_paths.cpp.o
.PHONY : test_paths.o
# target to build an object file
test_paths.cpp.o:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_paths.cpp.o
.PHONY : test_paths.cpp.o
test_paths.i: test_paths.cpp.i
.PHONY : test_paths.i
# target to preprocess a source file
test_paths.cpp.i:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_paths.cpp.i
.PHONY : test_paths.cpp.i
test_paths.s: test_paths.cpp.s
.PHONY : test_paths.s
# target to generate assembly for a file
test_paths.cpp.s:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_paths.cpp.s
.PHONY : test_paths.cpp.s
test_scangrid.o: test_scangrid.cpp.o
.PHONY : test_scangrid.o
# target to build an object file
test_scangrid.cpp.o:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_scangrid.cpp.o
.PHONY : test_scangrid.cpp.o
test_scangrid.i: test_scangrid.cpp.i
.PHONY : test_scangrid.i
# target to preprocess a source file
test_scangrid.cpp.i:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_scangrid.cpp.i
.PHONY : test_scangrid.cpp.i
test_scangrid.s: test_scangrid.cpp.s
.PHONY : test_scangrid.s
# target to generate assembly for a file
test_scangrid.cpp.s:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_scangrid.cpp.s
.PHONY : test_scangrid.cpp.s
test_scheduler.o: test_scheduler.cpp.o
.PHONY : test_scheduler.o
# target to build an object file
test_scheduler.cpp.o:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_scheduler.cpp.o
.PHONY : test_scheduler.cpp.o
test_scheduler.i: test_scheduler.cpp.i
.PHONY : test_scheduler.i
# target to preprocess a source file
test_scheduler.cpp.i:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_scheduler.cpp.i
.PHONY : test_scheduler.cpp.i
test_scheduler.s: test_scheduler.cpp.s
.PHONY : test_scheduler.s
# target to generate assembly for a file
test_scheduler.cpp.s:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_scheduler.cpp.s
.PHONY : test_scheduler.cpp.s
test_telemetry.o: test_telemetry.cpp.o
.PHONY : test_telemetry.o
# target to build an object file
test_telemetry.cpp.o:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_telemetry.cpp.o
.PHONY : test_telemetry.cpp.o
test_telemetry.i: test_telemetry.cpp.i
.PHONY : test_telemetry.i
# target to preprocess a source file
test_telemetry.cpp.i:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_telemetry.cpp.i
.PHONY : test_telemetry.cpp.i
test_telemetry.s: test_telemetry.cpp.s
.PHONY : test_telemetry.s
# target to generate assembly for a file
test_telemetry.cpp.s:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_telemetry.cpp.s
.PHONY : test_telemetry.cpp.s
test_uisnapshot.o: test_uisnapshot.cpp.o
.PHONY : test_uisnapshot.o
# target to build an object file
test_uisnapshot.cpp.o:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_uisnapshot.cpp.o
.PHONY : test_uisnapshot.cpp.o
test_uisnapshot.i: test_uisnapshot.cpp.i
.PHONY : test_uisnapshot.i
# target to preprocess a source file
test_uisnapshot.cpp.i:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_uisnapshot.cpp.i
.PHONY : test_uisnapshot.cpp.i
test_uisnapshot.s: test_uisnapshot.cpp.s
.PHONY : test_uisnapshot.s
# target to generate assembly for a file
test_uisnapshot.cpp.s:
cd /home/pedro/code/fwt_2a/software/build-notui && $(MAKE) $(MAKESILENT) -f tests/CMakeFiles/fgc_tests.dir/build.make tests/CMakeFiles/fgc_tests.dir/test_uisnapshot.cpp.s
.PHONY : test_uisnapshot.cpp.s
# Help Target
help:
@echo "The following are some of the valid targets for this Makefile:"
@echo "... all (the default if no target is provided)"
@echo "... clean"
@echo "... depend"
@echo "... edit_cache"
@echo "... install"
@echo "... install/local"
@echo "... install/strip"
@echo "... list_install_components"
@echo "... rebuild_cache"
@echo "... test"
@echo "... fgc_tests"
@echo "... doctest_main.o"
@echo "... doctest_main.i"
@echo "... doctest_main.s"
@echo "... test_command.o"
@echo "... test_command.i"
@echo "... test_command.s"
@echo "... test_config.o"
@echo "... test_config.i"
@echo "... test_config.s"
@echo "... test_geometry.o"
@echo "... test_geometry.i"
@echo "... test_geometry.s"
@echo "... test_logger.o"
@echo "... test_logger.i"
@echo "... test_logger.s"
@echo "... test_paths.o"
@echo "... test_paths.i"
@echo "... test_paths.s"
@echo "... test_scangrid.o"
@echo "... test_scangrid.i"
@echo "... test_scangrid.s"
@echo "... test_scheduler.o"
@echo "... test_scheduler.i"
@echo "... test_scheduler.s"
@echo "... test_telemetry.o"
@echo "... test_telemetry.i"
@echo "... test_telemetry.s"
@echo "... test_uisnapshot.o"
@echo "... test_uisnapshot.i"
@echo "... test_uisnapshot.s"
.PHONY : help
#=============================================================================
# Special targets to cleanup operation of make.
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
cd /home/pedro/code/fwt_2a/software/build-notui && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system

Binary file not shown.

View File

@ -1,5 +0,0 @@
if(EXISTS "/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests_tests-b858cb2.cmake")
include("/home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests_tests-b858cb2.cmake")
else()
add_test(fgc_tests_NOT_BUILT-b858cb2 fgc_tests_NOT_BUILT-b858cb2)
endif()

View File

@ -1,73 +0,0 @@
add_test( [==[parseCommand handles single-verb commands]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=parseCommand handles single-verb commands]==])
set_tests_properties( [==[parseCommand handles single-verb commands]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[parseCommand splits device and trailing numeric value]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=parseCommand splits device and trailing numeric value]==])
set_tests_properties( [==[parseCommand splits device and trailing numeric value]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[parseCommand keeps option plus value]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=parseCommand keeps option plus value]==])
set_tests_properties( [==[parseCommand keeps option plus value]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[parseCommand keeps non-numeric option (raw motor command)]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=parseCommand keeps non-numeric option (raw motor command)]==])
set_tests_properties( [==[parseCommand keeps non-numeric option (raw motor command)]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[parseCommand on empty input]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=parseCommand on empty input]==])
set_tests_properties( [==[parseCommand on empty input]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[ConfigLoader maps and defaults typed values]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=ConfigLoader maps and defaults typed values]==])
set_tests_properties( [==[ConfigLoader maps and defaults typed values]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[environment overrides file credentials]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=environment overrides file credentials]==])
set_tests_properties( [==[environment overrides file credentials]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[ConfigLoader validates input]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=ConfigLoader validates input]==])
set_tests_properties( [==[ConfigLoader validates input]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[AxisMap converts degrees and counts with an offset]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=AxisMap converts degrees and counts with an offset]==])
set_tests_properties( [==[AxisMap converts degrees and counts with an offset]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[AxisMap clamps to the soft range on the way out]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=AxisMap clamps to the soft range on the way out]==])
set_tests_properties( [==[AxisMap clamps to the soft range on the way out]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[AxisMap supports a negative (flipped) direction]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=AxisMap supports a negative (flipped) direction]==])
set_tests_properties( [==[AxisMap supports a negative (flipped) direction]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[AxisMap toDeg guards against a zero scale]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=AxisMap toDeg guards against a zero scale]==])
set_tests_properties( [==[AxisMap toDeg guards against a zero scale]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[parseCategories maps names, all/none, and flags unknown tokens]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=parseCategories maps names\, all/none\, and flags unknown tokens]==])
set_tests_properties( [==[parseCategories maps names, all/none, and flags unknown tokens]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[catFromString round-trips and flags unknown]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=catFromString round-trips and flags unknown]==])
set_tests_properties( [==[catFromString round-trips and flags unknown]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[category enable/disable/set round-trip]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=category enable/disable/set round-trip]==])
set_tests_properties( [==[category enable/disable/set round-trip]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[LOG_TRACE_CAT gating is independent of the linear level]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=LOG_TRACE_CAT gating is independent of the linear level]==])
set_tests_properties( [==[LOG_TRACE_CAT gating is independent of the linear level]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[expandUser expands ~ and environment variables]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=expandUser expands ~ and environment variables]==])
set_tests_properties( [==[expandUser expands ~ and environment variables]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[configSearchPaths honours the CLI argument first]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=configSearchPaths honours the CLI argument first]==])
set_tests_properties( [==[configSearchPaths honours the CLI argument first]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[parseScanCsv reads waypoints and skips comments/blanks]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=parseScanCsv reads waypoints and skips comments/blanks]==])
set_tests_properties( [==[parseScanCsv reads waypoints and skips comments/blanks]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[parseScanCsv throws on a malformed line]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=parseScanCsv throws on a malformed line]==])
set_tests_properties( [==[parseScanCsv throws on a malformed line]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[generateScanGrid produces yaw_intervals x pitch_levels points]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=generateScanGrid produces yaw_intervals x pitch_levels points]==])
set_tests_properties( [==[generateScanGrid produces yaw_intervals x pitch_levels points]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[ScanGrid cursor ping-pongs at both ends]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=ScanGrid cursor ping-pongs at both ends]==])
set_tests_properties( [==[ScanGrid cursor ping-pongs at both ends]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[ScanGrid single point and empty are safe]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=ScanGrid single point and empty are safe]==])
set_tests_properties( [==[ScanGrid single point and empty are safe]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[CaptureScheduler sweeps the scan grid with MOVE + settle + trigger]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=CaptureScheduler sweeps the scan grid with MOVE + settle + trigger]==])
set_tests_properties( [==[CaptureScheduler sweeps the scan grid with MOVE + settle + trigger]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[CaptureScheduler ControlCode 1 drives yaw to the target heading]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=CaptureScheduler ControlCode 1 drives yaw to the target heading]==])
set_tests_properties( [==[CaptureScheduler ControlCode 1 drives yaw to the target heading]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[CaptureScheduler clamps the target heading to the soft range]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=CaptureScheduler clamps the target heading to the soft range]==])
set_tests_properties( [==[CaptureScheduler clamps the target heading to the soft range]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[CaptureScheduler stays idle when capture inactive]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=CaptureScheduler stays idle when capture inactive]==])
set_tests_properties( [==[CaptureScheduler stays idle when capture inactive]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[parseTelemetryLine reads a two-axis ST line]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=parseTelemetryLine reads a two-axis ST line]==])
set_tests_properties( [==[parseTelemetryLine reads a two-axis ST line]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[parseTelemetryLine reads a yaw-only ST line (no flags field)]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=parseTelemetryLine reads a yaw-only ST line (no flags field)]==])
set_tests_properties( [==[parseTelemetryLine reads a yaw-only ST line (no flags field)]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[parseTelemetryLine rejects non-ST and malformed lines]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=parseTelemetryLine rejects non-ST and malformed lines]==])
set_tests_properties( [==[parseTelemetryLine rejects non-ST and malformed lines]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[parseTelemetryLine tolerates trailing CR]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=parseTelemetryLine tolerates trailing CR]==])
set_tests_properties( [==[parseTelemetryLine tolerates trailing CR]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[axisStateLabel maps every state]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=axisStateLabel maps every state]==])
set_tests_properties( [==[axisStateLabel maps every state]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[axisStateColor signals health]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=axisStateColor signals health]==])
set_tests_properties( [==[axisStateColor signals health]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[formatDegrees: one decimal, sign preserved, degree sign appended]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=formatDegrees: one decimal\, sign preserved\, degree sign appended]==])
set_tests_properties( [==[formatDegrees: one decimal, sign preserved, degree sign appended]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[formatTimeAgo: buckets and the never case]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=formatTimeAgo: buckets and the never case]==])
set_tests_properties( [==[formatTimeAgo: buckets and the never case]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
add_test( [==[pendingSensorsView: all fields absent until drivers land]==] /home/pedro/code/fwt_2a/software/build-notui/tests/fgc_tests [==[--test-case=pendingSensorsView: all fields absent until drivers land]==])
set_tests_properties( [==[pendingSensorsView: all fields absent until drivers land]==] PROPERTIES WORKING_DIRECTORY /home/pedro/code/fwt_2a/software/build-notui/tests LABELS)
set( fgc_tests_TESTS [==[parseCommand handles single-verb commands]==] [==[parseCommand splits device and trailing numeric value]==] [==[parseCommand keeps option plus value]==] [==[parseCommand keeps non-numeric option (raw motor command)]==] [==[parseCommand on empty input]==] [==[ConfigLoader maps and defaults typed values]==] [==[environment overrides file credentials]==] [==[ConfigLoader validates input]==] [==[AxisMap converts degrees and counts with an offset]==] [==[AxisMap clamps to the soft range on the way out]==] [==[AxisMap supports a negative (flipped) direction]==] [==[AxisMap toDeg guards against a zero scale]==] [==[parseCategories maps names, all/none, and flags unknown tokens]==] [==[catFromString round-trips and flags unknown]==] [==[category enable/disable/set round-trip]==] [==[LOG_TRACE_CAT gating is independent of the linear level]==] [==[expandUser expands ~ and environment variables]==] [==[configSearchPaths honours the CLI argument first]==] [==[parseScanCsv reads waypoints and skips comments/blanks]==] [==[parseScanCsv throws on a malformed line]==] [==[generateScanGrid produces yaw_intervals x pitch_levels points]==] [==[ScanGrid cursor ping-pongs at both ends]==] [==[ScanGrid single point and empty are safe]==] [==[CaptureScheduler sweeps the scan grid with MOVE + settle + trigger]==] [==[CaptureScheduler ControlCode 1 drives yaw to the target heading]==] [==[CaptureScheduler clamps the target heading to the soft range]==] [==[CaptureScheduler stays idle when capture inactive]==] [==[parseTelemetryLine reads a two-axis ST line]==] [==[parseTelemetryLine reads a yaw-only ST line (no flags field)]==] [==[parseTelemetryLine rejects non-ST and malformed lines]==] [==[parseTelemetryLine tolerates trailing CR]==] [==[axisStateLabel maps every state]==] [==[axisStateColor signals health]==] [==[formatDegrees: one decimal, sign preserved, degree sign appended]==] [==[formatTimeAgo: buckets and the never case]==] [==[pendingSensorsView: all fields absent until drivers land]==])

View File

@ -1,669 +0,0 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 4.3
# Default target executed when no arguments are given to make.
default_target: all
.PHONY : default_target
# Allow only one "make -f Makefile2" at a time, but pass parallelism.
.NOTPARALLEL:
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Disable VCS-based implicit rules.
% : %,v
# Disable VCS-based implicit rules.
% : RCS/%
# Disable VCS-based implicit rules.
% : RCS/%,v
# Disable VCS-based implicit rules.
% : SCCS/s.%
# Disable VCS-based implicit rules.
% : s.%
.SUFFIXES: .hpux_make_needs_suffix_list
# Command-line flag to silence nested $(MAKE).
$(VERBOSE)MAKESILENT = -s
#Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E rm -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/pedro/code/fwt_2a/software
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/pedro/code/fwt_2a/software/build-tui
#=============================================================================
# Targets provided globally by CMake.
# Special rule for the target edit_cache
edit_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..."
/usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : edit_cache
# Special rule for the target edit_cache
edit_cache/fast: edit_cache
.PHONY : edit_cache/fast
# Special rule for the target rebuild_cache
rebuild_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..."
/usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : rebuild_cache
# Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache
.PHONY : rebuild_cache/fast
# The main all target
all: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-tui/CMakeFiles /home/pedro/code/fwt_2a/software/build-tui//CMakeFiles/progress.marks
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all
$(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-tui/CMakeFiles 0
.PHONY : all
# The main clean target
clean:
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean
.PHONY : clean
# The main clean target
clean/fast: clean
.PHONY : clean/fast
# Prepare targets for installation.
preinstall: all
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast:
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall/fast
# clear depends
depend:
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
#=============================================================================
# Target rules for targets named fgc_core
# Build rule for target.
fgc_core: cmake_check_build_system
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 fgc_core
.PHONY : fgc_core
# fast build rule for target.
fgc_core/fast:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/build
.PHONY : fgc_core/fast
#=============================================================================
# Target rules for targets named fire_gimbal_control
# Build rule for target.
fire_gimbal_control: cmake_check_build_system
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 fire_gimbal_control
.PHONY : fire_gimbal_control
# fast build rule for target.
fire_gimbal_control/fast:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/build
.PHONY : fire_gimbal_control/fast
#=============================================================================
# Target rules for targets named screen
# Build rule for target.
screen: cmake_check_build_system
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 screen
.PHONY : screen
# fast build rule for target.
screen/fast:
$(MAKE) $(MAKESILENT) -f _deps/ftxui-build/CMakeFiles/screen.dir/build.make _deps/ftxui-build/CMakeFiles/screen.dir/build
.PHONY : screen/fast
#=============================================================================
# Target rules for targets named dom
# Build rule for target.
dom: cmake_check_build_system
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 dom
.PHONY : dom
# fast build rule for target.
dom/fast:
$(MAKE) $(MAKESILENT) -f _deps/ftxui-build/CMakeFiles/dom.dir/build.make _deps/ftxui-build/CMakeFiles/dom.dir/build
.PHONY : dom/fast
#=============================================================================
# Target rules for targets named component
# Build rule for target.
component: cmake_check_build_system
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 component
.PHONY : component
# fast build rule for target.
component/fast:
$(MAKE) $(MAKESILENT) -f _deps/ftxui-build/CMakeFiles/component.dir/build.make _deps/ftxui-build/CMakeFiles/component.dir/build
.PHONY : component/fast
ini.o: ini.c.o
.PHONY : ini.o
# target to build an object file
ini.c.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/ini.c.o
.PHONY : ini.c.o
ini.i: ini.c.i
.PHONY : ini.i
# target to preprocess a source file
ini.c.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/ini.c.i
.PHONY : ini.c.i
ini.s: ini.c.s
.PHONY : ini.s
# target to generate assembly for a file
ini.c.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/ini.c.s
.PHONY : ini.c.s
main.o: main.cpp.o
.PHONY : main.o
# target to build an object file
main.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/main.cpp.o
.PHONY : main.cpp.o
main.i: main.cpp.i
.PHONY : main.i
# target to preprocess a source file
main.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/main.cpp.i
.PHONY : main.cpp.i
main.s: main.cpp.s
.PHONY : main.s
# target to generate assembly for a file
main.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/main.cpp.s
.PHONY : main.cpp.s
src/camera/ImagePipeline.o: src/camera/ImagePipeline.cpp.o
.PHONY : src/camera/ImagePipeline.o
# target to build an object file
src/camera/ImagePipeline.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/camera/ImagePipeline.cpp.o
.PHONY : src/camera/ImagePipeline.cpp.o
src/camera/ImagePipeline.i: src/camera/ImagePipeline.cpp.i
.PHONY : src/camera/ImagePipeline.i
# target to preprocess a source file
src/camera/ImagePipeline.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/camera/ImagePipeline.cpp.i
.PHONY : src/camera/ImagePipeline.cpp.i
src/camera/ImagePipeline.s: src/camera/ImagePipeline.cpp.s
.PHONY : src/camera/ImagePipeline.s
# target to generate assembly for a file
src/camera/ImagePipeline.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/camera/ImagePipeline.cpp.s
.PHONY : src/camera/ImagePipeline.cpp.s
src/camera/JpegXlEncoder.o: src/camera/JpegXlEncoder.cpp.o
.PHONY : src/camera/JpegXlEncoder.o
# target to build an object file
src/camera/JpegXlEncoder.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/camera/JpegXlEncoder.cpp.o
.PHONY : src/camera/JpegXlEncoder.cpp.o
src/camera/JpegXlEncoder.i: src/camera/JpegXlEncoder.cpp.i
.PHONY : src/camera/JpegXlEncoder.i
# target to preprocess a source file
src/camera/JpegXlEncoder.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/camera/JpegXlEncoder.cpp.i
.PHONY : src/camera/JpegXlEncoder.cpp.i
src/camera/JpegXlEncoder.s: src/camera/JpegXlEncoder.cpp.s
.PHONY : src/camera/JpegXlEncoder.s
# target to generate assembly for a file
src/camera/JpegXlEncoder.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/camera/JpegXlEncoder.cpp.s
.PHONY : src/camera/JpegXlEncoder.cpp.s
src/core/Application.o: src/core/Application.cpp.o
.PHONY : src/core/Application.o
# target to build an object file
src/core/Application.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/core/Application.cpp.o
.PHONY : src/core/Application.cpp.o
src/core/Application.i: src/core/Application.cpp.i
.PHONY : src/core/Application.i
# target to preprocess a source file
src/core/Application.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/core/Application.cpp.i
.PHONY : src/core/Application.cpp.i
src/core/Application.s: src/core/Application.cpp.s
.PHONY : src/core/Application.s
# target to generate assembly for a file
src/core/Application.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/core/Application.cpp.s
.PHONY : src/core/Application.cpp.s
src/core/CaptureScheduler.o: src/core/CaptureScheduler.cpp.o
.PHONY : src/core/CaptureScheduler.o
# target to build an object file
src/core/CaptureScheduler.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/CaptureScheduler.cpp.o
.PHONY : src/core/CaptureScheduler.cpp.o
src/core/CaptureScheduler.i: src/core/CaptureScheduler.cpp.i
.PHONY : src/core/CaptureScheduler.i
# target to preprocess a source file
src/core/CaptureScheduler.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/CaptureScheduler.cpp.i
.PHONY : src/core/CaptureScheduler.cpp.i
src/core/CaptureScheduler.s: src/core/CaptureScheduler.cpp.s
.PHONY : src/core/CaptureScheduler.s
# target to generate assembly for a file
src/core/CaptureScheduler.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/CaptureScheduler.cpp.s
.PHONY : src/core/CaptureScheduler.cpp.s
src/core/CommandParser.o: src/core/CommandParser.cpp.o
.PHONY : src/core/CommandParser.o
# target to build an object file
src/core/CommandParser.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/CommandParser.cpp.o
.PHONY : src/core/CommandParser.cpp.o
src/core/CommandParser.i: src/core/CommandParser.cpp.i
.PHONY : src/core/CommandParser.i
# target to preprocess a source file
src/core/CommandParser.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/CommandParser.cpp.i
.PHONY : src/core/CommandParser.cpp.i
src/core/CommandParser.s: src/core/CommandParser.cpp.s
.PHONY : src/core/CommandParser.s
# target to generate assembly for a file
src/core/CommandParser.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/CommandParser.cpp.s
.PHONY : src/core/CommandParser.cpp.s
src/core/Config.o: src/core/Config.cpp.o
.PHONY : src/core/Config.o
# target to build an object file
src/core/Config.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Config.cpp.o
.PHONY : src/core/Config.cpp.o
src/core/Config.i: src/core/Config.cpp.i
.PHONY : src/core/Config.i
# target to preprocess a source file
src/core/Config.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Config.cpp.i
.PHONY : src/core/Config.cpp.i
src/core/Config.s: src/core/Config.cpp.s
.PHONY : src/core/Config.s
# target to generate assembly for a file
src/core/Config.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Config.cpp.s
.PHONY : src/core/Config.cpp.s
src/core/Geometry.o: src/core/Geometry.cpp.o
.PHONY : src/core/Geometry.o
# target to build an object file
src/core/Geometry.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Geometry.cpp.o
.PHONY : src/core/Geometry.cpp.o
src/core/Geometry.i: src/core/Geometry.cpp.i
.PHONY : src/core/Geometry.i
# target to preprocess a source file
src/core/Geometry.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Geometry.cpp.i
.PHONY : src/core/Geometry.cpp.i
src/core/Geometry.s: src/core/Geometry.cpp.s
.PHONY : src/core/Geometry.s
# target to generate assembly for a file
src/core/Geometry.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Geometry.cpp.s
.PHONY : src/core/Geometry.cpp.s
src/core/Logger.o: src/core/Logger.cpp.o
.PHONY : src/core/Logger.o
# target to build an object file
src/core/Logger.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Logger.cpp.o
.PHONY : src/core/Logger.cpp.o
src/core/Logger.i: src/core/Logger.cpp.i
.PHONY : src/core/Logger.i
# target to preprocess a source file
src/core/Logger.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Logger.cpp.i
.PHONY : src/core/Logger.cpp.i
src/core/Logger.s: src/core/Logger.cpp.s
.PHONY : src/core/Logger.s
# target to generate assembly for a file
src/core/Logger.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Logger.cpp.s
.PHONY : src/core/Logger.cpp.s
src/core/Paths.o: src/core/Paths.cpp.o
.PHONY : src/core/Paths.o
# target to build an object file
src/core/Paths.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Paths.cpp.o
.PHONY : src/core/Paths.cpp.o
src/core/Paths.i: src/core/Paths.cpp.i
.PHONY : src/core/Paths.i
# target to preprocess a source file
src/core/Paths.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Paths.cpp.i
.PHONY : src/core/Paths.cpp.i
src/core/Paths.s: src/core/Paths.cpp.s
.PHONY : src/core/Paths.s
# target to generate assembly for a file
src/core/Paths.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/Paths.cpp.s
.PHONY : src/core/Paths.cpp.s
src/core/ScanGrid.o: src/core/ScanGrid.cpp.o
.PHONY : src/core/ScanGrid.o
# target to build an object file
src/core/ScanGrid.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/ScanGrid.cpp.o
.PHONY : src/core/ScanGrid.cpp.o
src/core/ScanGrid.i: src/core/ScanGrid.cpp.i
.PHONY : src/core/ScanGrid.i
# target to preprocess a source file
src/core/ScanGrid.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/ScanGrid.cpp.i
.PHONY : src/core/ScanGrid.cpp.i
src/core/ScanGrid.s: src/core/ScanGrid.cpp.s
.PHONY : src/core/ScanGrid.s
# target to generate assembly for a file
src/core/ScanGrid.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/ScanGrid.cpp.s
.PHONY : src/core/ScanGrid.cpp.s
src/core/TelemetryParser.o: src/core/TelemetryParser.cpp.o
.PHONY : src/core/TelemetryParser.o
# target to build an object file
src/core/TelemetryParser.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/TelemetryParser.cpp.o
.PHONY : src/core/TelemetryParser.cpp.o
src/core/TelemetryParser.i: src/core/TelemetryParser.cpp.i
.PHONY : src/core/TelemetryParser.i
# target to preprocess a source file
src/core/TelemetryParser.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/TelemetryParser.cpp.i
.PHONY : src/core/TelemetryParser.cpp.i
src/core/TelemetryParser.s: src/core/TelemetryParser.cpp.s
.PHONY : src/core/TelemetryParser.s
# target to generate assembly for a file
src/core/TelemetryParser.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/core/TelemetryParser.cpp.s
.PHONY : src/core/TelemetryParser.cpp.s
src/serial/SerialMotorController.o: src/serial/SerialMotorController.cpp.o
.PHONY : src/serial/SerialMotorController.o
# target to build an object file
src/serial/SerialMotorController.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/serial/SerialMotorController.cpp.o
.PHONY : src/serial/SerialMotorController.cpp.o
src/serial/SerialMotorController.i: src/serial/SerialMotorController.cpp.i
.PHONY : src/serial/SerialMotorController.i
# target to preprocess a source file
src/serial/SerialMotorController.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/serial/SerialMotorController.cpp.i
.PHONY : src/serial/SerialMotorController.cpp.i
src/serial/SerialMotorController.s: src/serial/SerialMotorController.cpp.s
.PHONY : src/serial/SerialMotorController.s
# target to generate assembly for a file
src/serial/SerialMotorController.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/serial/SerialMotorController.cpp.s
.PHONY : src/serial/SerialMotorController.cpp.s
src/ui/HeadlessUi.o: src/ui/HeadlessUi.cpp.o
.PHONY : src/ui/HeadlessUi.o
# target to build an object file
src/ui/HeadlessUi.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/ui/HeadlessUi.cpp.o
.PHONY : src/ui/HeadlessUi.cpp.o
src/ui/HeadlessUi.i: src/ui/HeadlessUi.cpp.i
.PHONY : src/ui/HeadlessUi.i
# target to preprocess a source file
src/ui/HeadlessUi.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/ui/HeadlessUi.cpp.i
.PHONY : src/ui/HeadlessUi.cpp.i
src/ui/HeadlessUi.s: src/ui/HeadlessUi.cpp.s
.PHONY : src/ui/HeadlessUi.s
# target to generate assembly for a file
src/ui/HeadlessUi.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/ui/HeadlessUi.cpp.s
.PHONY : src/ui/HeadlessUi.cpp.s
src/ui/TuiUi.o: src/ui/TuiUi.cpp.o
.PHONY : src/ui/TuiUi.o
# target to build an object file
src/ui/TuiUi.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/ui/TuiUi.cpp.o
.PHONY : src/ui/TuiUi.cpp.o
src/ui/TuiUi.i: src/ui/TuiUi.cpp.i
.PHONY : src/ui/TuiUi.i
# target to preprocess a source file
src/ui/TuiUi.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/ui/TuiUi.cpp.i
.PHONY : src/ui/TuiUi.cpp.i
src/ui/TuiUi.s: src/ui/TuiUi.cpp.s
.PHONY : src/ui/TuiUi.s
# target to generate assembly for a file
src/ui/TuiUi.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fire_gimbal_control.dir/build.make CMakeFiles/fire_gimbal_control.dir/src/ui/TuiUi.cpp.s
.PHONY : src/ui/TuiUi.cpp.s
src/ui/UiSnapshot.o: src/ui/UiSnapshot.cpp.o
.PHONY : src/ui/UiSnapshot.o
# target to build an object file
src/ui/UiSnapshot.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/ui/UiSnapshot.cpp.o
.PHONY : src/ui/UiSnapshot.cpp.o
src/ui/UiSnapshot.i: src/ui/UiSnapshot.cpp.i
.PHONY : src/ui/UiSnapshot.i
# target to preprocess a source file
src/ui/UiSnapshot.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/ui/UiSnapshot.cpp.i
.PHONY : src/ui/UiSnapshot.cpp.i
src/ui/UiSnapshot.s: src/ui/UiSnapshot.cpp.s
.PHONY : src/ui/UiSnapshot.s
# target to generate assembly for a file
src/ui/UiSnapshot.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/fgc_core.dir/build.make CMakeFiles/fgc_core.dir/src/ui/UiSnapshot.cpp.s
.PHONY : src/ui/UiSnapshot.cpp.s
# Help Target
help:
@echo "The following are some of the valid targets for this Makefile:"
@echo "... all (the default if no target is provided)"
@echo "... clean"
@echo "... depend"
@echo "... edit_cache"
@echo "... rebuild_cache"
@echo "... component"
@echo "... dom"
@echo "... fgc_core"
@echo "... fire_gimbal_control"
@echo "... screen"
@echo "... ini.o"
@echo "... ini.i"
@echo "... ini.s"
@echo "... main.o"
@echo "... main.i"
@echo "... main.s"
@echo "... src/camera/ImagePipeline.o"
@echo "... src/camera/ImagePipeline.i"
@echo "... src/camera/ImagePipeline.s"
@echo "... src/camera/JpegXlEncoder.o"
@echo "... src/camera/JpegXlEncoder.i"
@echo "... src/camera/JpegXlEncoder.s"
@echo "... src/core/Application.o"
@echo "... src/core/Application.i"
@echo "... src/core/Application.s"
@echo "... src/core/CaptureScheduler.o"
@echo "... src/core/CaptureScheduler.i"
@echo "... src/core/CaptureScheduler.s"
@echo "... src/core/CommandParser.o"
@echo "... src/core/CommandParser.i"
@echo "... src/core/CommandParser.s"
@echo "... src/core/Config.o"
@echo "... src/core/Config.i"
@echo "... src/core/Config.s"
@echo "... src/core/Geometry.o"
@echo "... src/core/Geometry.i"
@echo "... src/core/Geometry.s"
@echo "... src/core/Logger.o"
@echo "... src/core/Logger.i"
@echo "... src/core/Logger.s"
@echo "... src/core/Paths.o"
@echo "... src/core/Paths.i"
@echo "... src/core/Paths.s"
@echo "... src/core/ScanGrid.o"
@echo "... src/core/ScanGrid.i"
@echo "... src/core/ScanGrid.s"
@echo "... src/core/TelemetryParser.o"
@echo "... src/core/TelemetryParser.i"
@echo "... src/core/TelemetryParser.s"
@echo "... src/serial/SerialMotorController.o"
@echo "... src/serial/SerialMotorController.i"
@echo "... src/serial/SerialMotorController.s"
@echo "... src/ui/HeadlessUi.o"
@echo "... src/ui/HeadlessUi.i"
@echo "... src/ui/HeadlessUi.s"
@echo "... src/ui/TuiUi.o"
@echo "... src/ui/TuiUi.i"
@echo "... src/ui/TuiUi.s"
@echo "... src/ui/UiSnapshot.o"
@echo "... src/ui/UiSnapshot.i"
@echo "... src/ui/UiSnapshot.s"
.PHONY : help
#=============================================================================
# Special targets to cleanup operation of make.
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system

File diff suppressed because it is too large Load Diff

View File

@ -1,140 +0,0 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 4.3
# Default target executed when no arguments are given to make.
default_target: all
.PHONY : default_target
# Allow only one "make -f Makefile2" at a time, but pass parallelism.
.NOTPARALLEL:
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Disable VCS-based implicit rules.
% : %,v
# Disable VCS-based implicit rules.
% : RCS/%
# Disable VCS-based implicit rules.
% : RCS/%,v
# Disable VCS-based implicit rules.
% : SCCS/s.%
# Disable VCS-based implicit rules.
% : s.%
.SUFFIXES: .hpux_make_needs_suffix_list
# Command-line flag to silence nested $(MAKE).
$(VERBOSE)MAKESILENT = -s
#Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E rm -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/pedro/code/fwt_2a/software
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/pedro/code/fwt_2a/software/build-tui
#=============================================================================
# Targets provided globally by CMake.
# Special rule for the target edit_cache
edit_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..."
/usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : edit_cache
# Special rule for the target edit_cache
edit_cache/fast: edit_cache
.PHONY : edit_cache/fast
# Special rule for the target rebuild_cache
rebuild_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..."
/usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : rebuild_cache
# Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache
.PHONY : rebuild_cache/fast
# The main all target
all: cmake_check_build_system
cd /home/pedro/code/fwt_2a/software/build-tui && $(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-tui/CMakeFiles /home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-build/doc//CMakeFiles/progress.marks
cd /home/pedro/code/fwt_2a/software/build-tui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/ftxui-build/doc/all
$(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-tui/CMakeFiles 0
.PHONY : all
# The main clean target
clean:
cd /home/pedro/code/fwt_2a/software/build-tui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/ftxui-build/doc/clean
.PHONY : clean
# The main clean target
clean/fast: clean
.PHONY : clean/fast
# Prepare targets for installation.
preinstall: all
cd /home/pedro/code/fwt_2a/software/build-tui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/ftxui-build/doc/preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast:
cd /home/pedro/code/fwt_2a/software/build-tui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/ftxui-build/doc/preinstall
.PHONY : preinstall/fast
# clear depends
depend:
cd /home/pedro/code/fwt_2a/software/build-tui && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
# Help Target
help:
@echo "The following are some of the valid targets for this Makefile:"
@echo "... all (the default if no target is provided)"
@echo "... clean"
@echo "... depend"
@echo "... edit_cache"
@echo "... rebuild_cache"
.PHONY : help
#=============================================================================
# Special targets to cleanup operation of make.
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
cd /home/pedro/code/fwt_2a/software/build-tui && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system

View File

@ -1,140 +0,0 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 4.3
# Default target executed when no arguments are given to make.
default_target: all
.PHONY : default_target
# Allow only one "make -f Makefile2" at a time, but pass parallelism.
.NOTPARALLEL:
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Disable VCS-based implicit rules.
% : %,v
# Disable VCS-based implicit rules.
% : RCS/%
# Disable VCS-based implicit rules.
% : RCS/%,v
# Disable VCS-based implicit rules.
% : SCCS/s.%
# Disable VCS-based implicit rules.
% : s.%
.SUFFIXES: .hpux_make_needs_suffix_list
# Command-line flag to silence nested $(MAKE).
$(VERBOSE)MAKESILENT = -s
#Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E rm -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/pedro/code/fwt_2a/software
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/pedro/code/fwt_2a/software/build-tui
#=============================================================================
# Targets provided globally by CMake.
# Special rule for the target edit_cache
edit_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..."
/usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : edit_cache
# Special rule for the target edit_cache
edit_cache/fast: edit_cache
.PHONY : edit_cache/fast
# Special rule for the target rebuild_cache
rebuild_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..."
/usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : rebuild_cache
# Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache
.PHONY : rebuild_cache/fast
# The main all target
all: cmake_check_build_system
cd /home/pedro/code/fwt_2a/software/build-tui && $(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-tui/CMakeFiles /home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-build/examples//CMakeFiles/progress.marks
cd /home/pedro/code/fwt_2a/software/build-tui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/ftxui-build/examples/all
$(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-tui/CMakeFiles 0
.PHONY : all
# The main clean target
clean:
cd /home/pedro/code/fwt_2a/software/build-tui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/ftxui-build/examples/clean
.PHONY : clean
# The main clean target
clean/fast: clean
.PHONY : clean/fast
# Prepare targets for installation.
preinstall: all
cd /home/pedro/code/fwt_2a/software/build-tui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/ftxui-build/examples/preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast:
cd /home/pedro/code/fwt_2a/software/build-tui && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 _deps/ftxui-build/examples/preinstall
.PHONY : preinstall/fast
# clear depends
depend:
cd /home/pedro/code/fwt_2a/software/build-tui && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
# Help Target
help:
@echo "The following are some of the valid targets for this Makefile:"
@echo "... all (the default if no target is provided)"
@echo "... clean"
@echo "... depend"
@echo "... edit_cache"
@echo "... rebuild_cache"
.PHONY : help
#=============================================================================
# Special targets to cleanup operation of make.
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
cd /home/pedro/code/fwt_2a/software/build-tui && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system

View File

@ -1,101 +0,0 @@
# Generated by CMake
if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8)
message(FATAL_ERROR "CMake >= 2.8.3 required")
endif()
if(CMAKE_VERSION VERSION_LESS "2.8.3")
message(FATAL_ERROR "CMake >= 2.8.3 required")
endif()
cmake_policy(PUSH)
cmake_policy(VERSION 2.8.3...4.1)
#----------------------------------------------------------------
# Generated CMake target import file.
#----------------------------------------------------------------
# Commands may need to know the format version.
set(CMAKE_IMPORT_FILE_VERSION 1)
# Protect against multiple inclusion, which would fail when already imported targets are added once more.
set(_cmake_targets_defined "")
set(_cmake_targets_not_defined "")
set(_cmake_expected_targets "")
foreach(_cmake_expected_target IN ITEMS ftxui::screen ftxui::dom ftxui::component)
list(APPEND _cmake_expected_targets "${_cmake_expected_target}")
if(TARGET "${_cmake_expected_target}")
list(APPEND _cmake_targets_defined "${_cmake_expected_target}")
else()
list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}")
endif()
endforeach()
unset(_cmake_expected_target)
if(_cmake_targets_defined STREQUAL _cmake_expected_targets)
unset(_cmake_targets_defined)
unset(_cmake_targets_not_defined)
unset(_cmake_expected_targets)
unset(CMAKE_IMPORT_FILE_VERSION)
cmake_policy(POP)
return()
endif()
if(NOT _cmake_targets_defined STREQUAL "")
string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}")
string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}")
message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n")
endif()
unset(_cmake_targets_defined)
unset(_cmake_targets_not_defined)
unset(_cmake_expected_targets)
# Create imported target ftxui::screen
add_library(ftxui::screen STATIC IMPORTED)
set_target_properties(ftxui::screen PROPERTIES
INTERFACE_COMPILE_FEATURES "cxx_std_17"
INTERFACE_INCLUDE_DIRECTORIES "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src/include"
)
# Create imported target ftxui::dom
add_library(ftxui::dom STATIC IMPORTED)
set_target_properties(ftxui::dom PROPERTIES
INTERFACE_COMPILE_FEATURES "cxx_std_17"
INTERFACE_INCLUDE_DIRECTORIES "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src/include"
INTERFACE_LINK_LIBRARIES "ftxui::screen"
)
# Create imported target ftxui::component
add_library(ftxui::component STATIC IMPORTED)
set_target_properties(ftxui::component PROPERTIES
INTERFACE_COMPILE_FEATURES "cxx_std_17"
INTERFACE_INCLUDE_DIRECTORIES "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src/include"
INTERFACE_LINK_LIBRARIES "ftxui::dom;Threads::Threads"
)
# Import target "ftxui::screen" for configuration "Release"
set_property(TARGET ftxui::screen APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(ftxui::screen PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
IMPORTED_LOCATION_RELEASE "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-build/libftxui-screen.a"
)
# Import target "ftxui::dom" for configuration "Release"
set_property(TARGET ftxui::dom APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(ftxui::dom PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
IMPORTED_LOCATION_RELEASE "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-build/libftxui-dom.a"
)
# Import target "ftxui::component" for configuration "Release"
set_property(TARGET ftxui::component APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(ftxui::component PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
IMPORTED_LOCATION_RELEASE "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-build/libftxui-component.a"
)
# This file does not depend on other imported targets which have
# been exported from the same project but in a separate export set.
# Commands beyond this point should not need to know the version.
set(CMAKE_IMPORT_FILE_VERSION)
cmake_policy(POP)

@ -1 +0,0 @@
Subproject commit cdf28903a7781f97ba94d30b79c3a4b0c97ccce7

View File

@ -1,42 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.
cmake_minimum_required(VERSION 4.3.3)
# Reject any attempt to use a toolchain file. We must not use one because
# we could be downloading it here. If the CMAKE_TOOLCHAIN_FILE environment
# variable is set, the cache variable will have been initialized from it.
unset(CMAKE_TOOLCHAIN_FILE CACHE)
unset(ENV{CMAKE_TOOLCHAIN_FILE})
# We name the project and the target for the ExternalProject_Add() call
# to something that will highlight to the user what we are working on if
# something goes wrong and an error message is produced.
project(ftxui-populate NONE)
# Pass through things we've already detected in the main project to avoid
# paying the cost of redetecting them again in ExternalProject_Add()
set(GIT_EXECUTABLE [==[/usr/bin/git]==])
set(Git_VERSION [==[2.54.0]==])
set_property(GLOBAL PROPERTY _CMAKE_FindGit_GIT_EXECUTABLE_VERSION
[==[/usr/bin/git;2.54.0]==]
)
include(ExternalProject)
ExternalProject_Add(ftxui-populate
"UPDATE_DISCONNECTED" "False" "GIT_REPOSITORY" "https://github.com/ArthurSonzogni/FTXUI.git" "EXTERNALPROJECT_INTERNAL_ARGUMENT_SEPARATOR" "GIT_TAG" "v5.0.0" "GIT_SHALLOW" "TRUE"
SOURCE_DIR "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
BINARY_DIR "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-build"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
USES_TERMINAL_DOWNLOAD YES
USES_TERMINAL_UPDATE YES
USES_TERMINAL_PATCH YES
)

View File

@ -1,162 +0,0 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 4.3
# Default target executed when no arguments are given to make.
default_target: all
.PHONY : default_target
# Allow only one "make -f Makefile2" at a time, but pass parallelism.
.NOTPARALLEL:
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Disable VCS-based implicit rules.
% : %,v
# Disable VCS-based implicit rules.
% : RCS/%
# Disable VCS-based implicit rules.
% : RCS/%,v
# Disable VCS-based implicit rules.
% : SCCS/s.%
# Disable VCS-based implicit rules.
% : s.%
.SUFFIXES: .hpux_make_needs_suffix_list
# Command-line flag to silence nested $(MAKE).
$(VERBOSE)MAKESILENT = -s
#Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E rm -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild
#=============================================================================
# Targets provided globally by CMake.
# Special rule for the target edit_cache
edit_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake cache editor..."
/usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : edit_cache
# Special rule for the target edit_cache
edit_cache/fast: edit_cache
.PHONY : edit_cache/fast
# Special rule for the target rebuild_cache
rebuild_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..."
/usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : rebuild_cache
# Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache
.PHONY : rebuild_cache/fast
# The main all target
all: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/CMakeFiles /home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild//CMakeFiles/progress.marks
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all
$(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/CMakeFiles 0
.PHONY : all
# The main codegen target
codegen: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/CMakeFiles /home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild//CMakeFiles/progress.marks
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 codegen
$(CMAKE_COMMAND) -E cmake_progress_start /home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/CMakeFiles 0
.PHONY : codegen
# The main clean target
clean:
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean
.PHONY : clean
# The main clean target
clean/fast: clean
.PHONY : clean/fast
# Prepare targets for installation.
preinstall: all
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast:
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall/fast
# clear depends
depend:
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
#=============================================================================
# Target rules for targets named ftxui-populate
# Build rule for target.
ftxui-populate: cmake_check_build_system
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 ftxui-populate
.PHONY : ftxui-populate
# fast build rule for target.
ftxui-populate/fast:
$(MAKE) $(MAKESILENT) -f CMakeFiles/ftxui-populate.dir/build.make CMakeFiles/ftxui-populate.dir/build
.PHONY : ftxui-populate/fast
# Help Target
help:
@echo "The following are some of the valid targets for this Makefile:"
@echo "... all (the default if no target is provided)"
@echo "... clean"
@echo "... depend"
@echo "... codegen"
@echo "... edit_cache"
@echo "... rebuild_cache"
@echo "... ftxui-populate"
.PHONY : help
#=============================================================================
# Special targets to cleanup operation of make.
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system

View File

@ -1,15 +0,0 @@
# This is a generated file and its contents are an internal implementation detail.
# The download step will be re-executed if anything in this file changes.
# No other meaning or use of this file is supported.
method=git
command=/usr/bin/cmake;-DCMAKE_MESSAGE_LOG_LEVEL=VERBOSE;-P;/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/tmp/ftxui-populate-gitclone.cmake
source_dir=/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src
work_dir=/home/pedro/code/fwt_2a/software/build-tui/_deps
repository=https://github.com/ArthurSonzogni/FTXUI.git
remote=origin
init_submodules=TRUE
recurse_submodules=--recursive
submodules=
CMP0097=NEW

View File

@ -1,15 +0,0 @@
# This is a generated file and its contents are an internal implementation detail.
# The download step will be re-executed if anything in this file changes.
# No other meaning or use of this file is supported.
method=git
command=/usr/bin/cmake;-DCMAKE_MESSAGE_LOG_LEVEL=VERBOSE;-P;/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/tmp/ftxui-populate-gitclone.cmake
source_dir=/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src
work_dir=/home/pedro/code/fwt_2a/software/build-tui/_deps
repository=https://github.com/ArthurSonzogni/FTXUI.git
remote=origin
init_submodules=TRUE
recurse_submodules=--recursive
submodules=
CMP0097=NEW

View File

@ -1,6 +0,0 @@
# This is a generated file and its contents are an internal implementation detail.
# The update step will be re-executed if anything in this file changes.
# No other meaning or use of this file is supported.
command=
work_dir=

View File

@ -1,7 +0,0 @@
# This is a generated file and its contents are an internal implementation detail.
# The patch step will be re-executed if anything in this file changes.
# No other meaning or use of this file is supported.
command (connected)=/usr/bin/cmake;-Dcan_fetch=YES;-DCMAKE_MESSAGE_LOG_LEVEL=VERBOSE;-P;/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/tmp/ftxui-populate-gitupdate.cmake
command (disconnected)=/usr/bin/cmake;-Dcan_fetch=NO;-DCMAKE_MESSAGE_LOG_LEVEL=VERBOSE;-P;/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/tmp/ftxui-populate-gitupdate.cmake
work_dir=/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src

View File

@ -1,87 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.
cmake_minimum_required(VERSION ${CMAKE_VERSION}) # this file comes with cmake
if(EXISTS "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/src/ftxui-populate-stamp/ftxui-populate-gitclone-lastrun.txt" AND EXISTS "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/src/ftxui-populate-stamp/ftxui-populate-gitinfo.txt" AND
"/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/src/ftxui-populate-stamp/ftxui-populate-gitclone-lastrun.txt" IS_NEWER_THAN "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/src/ftxui-populate-stamp/ftxui-populate-gitinfo.txt")
message(VERBOSE
"Avoiding repeated git clone, stamp file is up to date: "
"'/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/src/ftxui-populate-stamp/ftxui-populate-gitclone-lastrun.txt'"
)
return()
endif()
# Even at VERBOSE level, we don't want to see the commands executed, but
# enabling them to be shown for DEBUG may be useful to help diagnose problems.
cmake_language(GET_MESSAGE_LOG_LEVEL active_log_level)
if(active_log_level MATCHES "DEBUG|TRACE")
set(maybe_show_command COMMAND_ECHO STDOUT)
else()
set(maybe_show_command "")
endif()
execute_process(
COMMAND ${CMAKE_COMMAND} -E rm -rf "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
RESULT_VARIABLE error_code
${maybe_show_command}
)
if(error_code)
message(FATAL_ERROR "Failed to remove directory: '/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src'")
endif()
# try the clone 3 times in case there is an odd git clone issue
set(error_code 1)
set(number_of_tries 0)
while(error_code AND number_of_tries LESS 3)
execute_process(
COMMAND "/usr/bin/git"
clone --no-checkout --depth 1 --no-single-branch --config "advice.detachedHead=false" "https://github.com/ArthurSonzogni/FTXUI.git" "ftxui-src"
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps"
RESULT_VARIABLE error_code
${maybe_show_command}
)
math(EXPR number_of_tries "${number_of_tries} + 1")
endwhile()
if(number_of_tries GREATER 1)
message(NOTICE "Had to git clone more than once: ${number_of_tries} times.")
endif()
if(error_code)
message(FATAL_ERROR "Failed to clone repository: 'https://github.com/ArthurSonzogni/FTXUI.git'")
endif()
execute_process(
COMMAND "/usr/bin/git"
checkout "v5.0.0" --
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
RESULT_VARIABLE error_code
${maybe_show_command}
)
if(error_code)
message(FATAL_ERROR "Failed to checkout tag: 'v5.0.0'")
endif()
set(init_submodules TRUE)
if(init_submodules)
execute_process(
COMMAND "/usr/bin/git"
submodule update --recursive --init
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
RESULT_VARIABLE error_code
${maybe_show_command}
)
endif()
if(error_code)
message(FATAL_ERROR "Failed to update submodules in: '/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src'")
endif()
# Complete success, update the script-last-run stamp file:
#
execute_process(
COMMAND ${CMAKE_COMMAND} -E copy "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/src/ftxui-populate-stamp/ftxui-populate-gitinfo.txt" "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/src/ftxui-populate-stamp/ftxui-populate-gitclone-lastrun.txt"
RESULT_VARIABLE error_code
${maybe_show_command}
)
if(error_code)
message(FATAL_ERROR "Failed to copy script-last-run stamp file: '/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/src/ftxui-populate-stamp/ftxui-populate-gitclone-lastrun.txt'")
endif()

View File

@ -1,317 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.
cmake_minimum_required(VERSION ${CMAKE_VERSION}) # this file comes with cmake
# Even at VERBOSE level, we don't want to see the commands executed, but
# enabling them to be shown for DEBUG may be useful to help diagnose problems.
cmake_language(GET_MESSAGE_LOG_LEVEL active_log_level)
if(active_log_level MATCHES "DEBUG|TRACE")
set(maybe_show_command COMMAND_ECHO STDOUT)
else()
set(maybe_show_command "")
endif()
function(do_fetch)
message(VERBOSE "Fetching latest from the remote origin")
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git fetch --tags --force "origin"
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
COMMAND_ERROR_IS_FATAL LAST
${maybe_show_command}
)
endfunction()
function(get_hash_for_ref ref out_var err_var)
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git rev-parse "${ref}^0"
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
RESULT_VARIABLE error_code
OUTPUT_VARIABLE ref_hash
ERROR_VARIABLE error_msg
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(error_code)
set(${out_var} "" PARENT_SCOPE)
else()
set(${out_var} "${ref_hash}" PARENT_SCOPE)
endif()
set(${err_var} "${error_msg}" PARENT_SCOPE)
endfunction()
get_hash_for_ref(HEAD head_sha error_msg)
if(head_sha STREQUAL "")
message(FATAL_ERROR "Failed to get the hash for HEAD:\n${error_msg}")
endif()
if("${can_fetch}" STREQUAL "")
set(can_fetch "YES")
endif()
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git show-ref "v5.0.0"
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
OUTPUT_VARIABLE show_ref_output
)
if(show_ref_output MATCHES "^[a-z0-9]+[ \\t]+refs/remotes/")
# Given a full remote/branch-name and we know about it already. Since
# branches can move around, we should always fetch, if permitted.
if(can_fetch)
do_fetch()
endif()
set(checkout_name "v5.0.0")
elseif(show_ref_output MATCHES "^[a-z0-9]+[ \\t]+refs/tags/")
# Given a tag name that we already know about. We don't know if the tag we
# have matches the remote though (tags can move), so we should fetch. As a
# special case to preserve backward compatibility, if we are already at the
# same commit as the tag we hold locally, don't do a fetch and assume the tag
# hasn't moved on the remote.
# FIXME: We should provide an option to always fetch for this case
get_hash_for_ref("v5.0.0" tag_sha error_msg)
if(tag_sha STREQUAL head_sha)
message(VERBOSE "Already at requested tag: v5.0.0")
return()
endif()
if(can_fetch)
do_fetch()
endif()
set(checkout_name "v5.0.0")
elseif(show_ref_output MATCHES "^[a-z0-9]+[ \\t]+refs/heads/")
# Given a branch name without any remote and we already have a branch by that
# name. We might already have that branch checked out or it might be a
# different branch. It isn't fully safe to use a bare branch name without the
# remote, so do a fetch (if allowed) and replace the ref with one that
# includes the remote.
if(can_fetch)
do_fetch()
endif()
set(checkout_name "origin/v5.0.0")
else()
get_hash_for_ref("v5.0.0" tag_sha error_msg)
if(tag_sha STREQUAL head_sha)
# Have the right commit checked out already
message(VERBOSE "Already at requested ref: ${tag_sha}")
return()
elseif(tag_sha STREQUAL "")
# We don't know about this ref yet, so we have no choice but to fetch.
if(NOT can_fetch)
message(FATAL_ERROR
"Requested git ref \"v5.0.0\" is not present locally, and not "
"allowed to contact remote due to UPDATE_DISCONNECTED setting."
)
endif()
# We deliberately swallow any error message at the default log level
# because it can be confusing for users to see a failed git command.
# That failure is being handled here, so it isn't an error.
if(NOT error_msg STREQUAL "")
message(DEBUG "${error_msg}")
endif()
do_fetch()
set(checkout_name "v5.0.0")
else()
# We have the commit, so we know we were asked to find a commit hash
# (otherwise it would have been handled further above), but we don't
# have that commit checked out yet. We don't need to fetch from the remote.
set(checkout_name "v5.0.0")
if(NOT error_msg STREQUAL "")
message(WARNING "${error_msg}")
endif()
endif()
endif()
set(git_update_strategy "REBASE")
if(git_update_strategy STREQUAL "")
# Backward compatibility requires REBASE as the default behavior
set(git_update_strategy REBASE)
endif()
if(git_update_strategy MATCHES "^REBASE(_CHECKOUT)?$")
# Asked to potentially try to rebase first, maybe with fallback to checkout.
# We can't if we aren't already on a branch and we shouldn't if that local
# branch isn't tracking the one we want to checkout.
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git symbolic-ref -q HEAD
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
OUTPUT_VARIABLE current_branch
OUTPUT_STRIP_TRAILING_WHITESPACE
# Don't test for an error. If this isn't a branch, we get a non-zero error
# code but empty output.
)
if(current_branch STREQUAL "")
# Not on a branch, checkout is the only sensible option since any rebase
# would always fail (and backward compatibility requires us to checkout in
# this situation)
set(git_update_strategy CHECKOUT)
else()
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git for-each-ref "--format=%(upstream:short)" "${current_branch}"
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
OUTPUT_VARIABLE upstream_branch
OUTPUT_STRIP_TRAILING_WHITESPACE
COMMAND_ERROR_IS_FATAL ANY # There is no error if no upstream is set
)
if(NOT upstream_branch STREQUAL checkout_name)
# Not safe to rebase when asked to checkout a different branch to the one
# we are tracking. If we did rebase, we could end up with arbitrary
# commits added to the ref we were asked to checkout if the current local
# branch happens to be able to rebase onto the target branch. There would
# be no error message and the user wouldn't know this was occurring.
set(git_update_strategy CHECKOUT)
endif()
endif()
elseif(NOT git_update_strategy STREQUAL "CHECKOUT")
message(FATAL_ERROR "Unsupported git update strategy: ${git_update_strategy}")
endif()
# Check if stash is needed
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git status --porcelain
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
RESULT_VARIABLE error_code
OUTPUT_VARIABLE repo_status
)
if(error_code)
message(FATAL_ERROR "Failed to get the status")
endif()
string(LENGTH "${repo_status}" need_stash)
# If not in clean state, stash changes in order to be able to perform a
# rebase or checkout without losing those changes permanently
if(need_stash)
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git stash save --quiet;--include-untracked
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
COMMAND_ERROR_IS_FATAL ANY
${maybe_show_command}
)
endif()
if(git_update_strategy STREQUAL "CHECKOUT")
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git checkout "${checkout_name}"
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
COMMAND_ERROR_IS_FATAL ANY
${maybe_show_command}
)
else()
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git rebase "${checkout_name}"
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
RESULT_VARIABLE error_code
OUTPUT_VARIABLE rebase_output
ERROR_VARIABLE rebase_output
)
if(error_code)
# Rebase failed, undo the rebase attempt before continuing
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git rebase --abort
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
${maybe_show_command}
)
if(NOT git_update_strategy STREQUAL "REBASE_CHECKOUT")
# Not allowed to do a checkout as a fallback, so cannot proceed
if(need_stash)
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git stash pop --index --quiet
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
${maybe_show_command}
)
endif()
message(FATAL_ERROR "\nFailed to rebase in: '/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src'."
"\nOutput from the attempted rebase follows:"
"\n${rebase_output}"
"\n\nYou will have to resolve the conflicts manually")
endif()
# Fall back to checkout. We create an annotated tag so that the user
# can manually inspect the situation and revert if required.
# We can't log the failed rebase output because MSVC sees it and
# intervenes, causing the build to fail even though it completes.
# Write it to a file instead.
string(TIMESTAMP tag_timestamp "%Y%m%dT%H%M%S" UTC)
set(tag_name _cmake_ExternalProject_moved_from_here_${tag_timestamp}Z)
set(error_log_file ${CMAKE_CURRENT_LIST_DIR}/rebase_error_${tag_timestamp}Z.log)
file(WRITE ${error_log_file} "${rebase_output}")
message(WARNING "Rebase failed, output has been saved to ${error_log_file}"
"\nFalling back to checkout, previous commit tagged as ${tag_name}")
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git tag -a
-m "ExternalProject attempting to move from here to ${checkout_name}"
${tag_name}
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
COMMAND_ERROR_IS_FATAL ANY
${maybe_show_command}
)
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git checkout "${checkout_name}"
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
COMMAND_ERROR_IS_FATAL ANY
${maybe_show_command}
)
endif()
endif()
if(need_stash)
# Put back the stashed changes
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git stash pop --index --quiet
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
RESULT_VARIABLE error_code
${maybe_show_command}
)
if(error_code)
# Stash pop --index failed: Try again dropping the index
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git reset --hard --quiet
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
${maybe_show_command}
)
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git stash pop --quiet
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
RESULT_VARIABLE error_code
${maybe_show_command}
)
if(error_code)
# Stash pop failed: Restore previous state.
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git reset --hard --quiet ${head_sha}
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
${maybe_show_command}
)
execute_process(
COMMAND "/usr/bin/git" --git-dir=.git stash pop --index --quiet
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
${maybe_show_command}
)
message(FATAL_ERROR "\nFailed to unstash changes in: '/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src'."
"\nYou will have to resolve the conflicts manually")
endif()
endif()
endif()
set(init_submodules "TRUE")
if(init_submodules)
execute_process(
COMMAND "/usr/bin/git"
--git-dir=.git
submodule update --recursive --init
WORKING_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src"
COMMAND_ERROR_IS_FATAL ANY
${maybe_show_command}
)
endif()

View File

@ -1,27 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.
cmake_minimum_required(VERSION ${CMAKE_VERSION}) # this file comes with cmake
# If CMAKE_DISABLE_SOURCE_CHANGES is set to true and the source directory is an
# existing directory in our source tree, calling file(MAKE_DIRECTORY) on it
# would cause a fatal error, even though it would be a no-op.
if(NOT EXISTS "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src")
file(MAKE_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-src")
endif()
file(MAKE_DIRECTORY
"/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-build"
"/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix"
"/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/tmp"
"/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/src/ftxui-populate-stamp"
"/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/src"
"/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/src/ftxui-populate-stamp"
)
set(configSubDirs )
foreach(subDir IN LISTS configSubDirs)
file(MAKE_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/src/ftxui-populate-stamp/${subDir}")
endforeach()
if(cfgdir)
file(MAKE_DIRECTORY "/home/pedro/code/fwt_2a/software/build-tui/_deps/ftxui-subbuild/ftxui-populate-prefix/src/ftxui-populate-stamp${cfgdir}") # cfgdir has leading slash
endif()

Binary file not shown.

Binary file not shown.

View File

@ -76,9 +76,10 @@ baud = 115200
; Ambient temperature/humidity sensor (Adafruit SHT41), wired to the
; LattePanda's OWN native I2C bus - NOT the Arduino/motor serial link. Bus
; number varies by board; confirm with `i2cdetect -y N` (SHT41 shows up at
; 0x44). Enable with [Features] enable_env = true.
; 0x44). Enable with [Features] enable_env = true (or run with --mock-env,
; which implies it). i2c_addr takes decimal or 0x-prefixed hex.
i2c_device = /dev/i2c-1
i2c_addr = 68
i2c_addr = 0x44
period_ms = 2000
[Motor]

View File

@ -11,7 +11,7 @@ The design separates **policy** (the control logic) from **mechanism** (the I/O
- **`fgc_core`** — an SDK-independent static library: typed configuration, path resolution, logging, the
telemetry/command parsers, and the `CaptureScheduler` (control state machine). Depends on nothing
proprietary, so it builds and unit-tests anywhere.
- **Four interfaces** abstract the outside world, each with a real and a mock/null implementation:
- **Five interfaces** abstract the outside world, each with a real and a mock/null implementation:
| Interface | Real | Mock / Null |
|-----------|------|-------------|
@ -19,9 +19,11 @@ The design separates **policy** (the control logic) from **mechanism** (the I/O
| `IControlChannel` | `MqttControlChannel` (Paho) | `NullControlChannel` (no broker) |
| `ICameraSource` | `VimbaCameraSource` (Vimba X) | `MockCameraSource` (synthetic frames) |
| `IImuSource` | `MtiImuSource` (Xsens MTi, Boost.Asio) | `MockImuSource` (synthetic orientation) |
| `IEnvSensor` | `Sht41EnvSensor` (SHT41 over I2C) | `MockEnvSensor` (synthetic temp/humidity) |
The IMU is optional (`[Features] enable_imu`); it feeds the Sensors panel and the IMU-referenced
`gimbal calib`. Long-running operations (`gimbal calib` on a worker thread, `gimbal diag` captured from
Both sensors are optional (`[Features] enable_imu` / `enable_env`) and feed the Sensors panel: the IMU
supplies orientation and the IMU-referenced `gimbal calib`, the SHT41 the ambient temperature and
humidity (also published on the MQTT `Env` topic). Long-running operations (`gimbal calib` on a worker thread, `gimbal diag` captured from
the firmware) publish progress + results into the `UiSnapshot` activity strip, polled on the control
thread so all geometry/state mutation stays single-threaded.

View File

@ -60,7 +60,7 @@ Parsed and validated by `ConfigLoader` ([src/core/Config.cpp](../src/core/Config
| `IMU` | `device` | string | — | MTi serial device (see `[IMU]` note); required when `enable_imu` |
| `IMU` | `baud` | int | `115200` | MTi serial baud rate |
| `Env` | `i2c_device` | string | `/dev/i2c-1` | SHT41 I2C bus device (see `[Env]` note); required when `enable_env` |
| `Env` | `i2c_addr` | int | `68` (`0x44`) | SHT41 I2C slave address |
| `Env` | `i2c_addr` | int | `68` (`0x44`) | SHT41 I2C slave address; decimal or `0x`-prefixed hex |
| `Env` | `period_ms` | int | `2000` | Sample interval |
| `Logging` | `level` | enum | `info` | Linear log level (`--log-level` overrides) |
| `Logging` | `trace` | csv | — | Wire-trace categories, off by default (`--trace` overrides) |
@ -150,10 +150,14 @@ pausing the stream) and also requests a fresh firmware dump for the gimbal `g` v
Enable with `[Features] enable_env = true` and point `[Env] i2c_device` at the LattePanda's **own
native I2C bus** — this is a separate physical link from the motor Leonardo's serial connection, not
the Arduino's D2 pin (the original DHT11 plan). Bus number varies by board; confirm with
`i2cdetect -y N` (the SHT41 answers at `0x44`/`68`). The backend (`Sht41EnvSensor`) polls at
`period_ms`, discarding any sample that fails the SHT4x CRC-8 check. Set `[Features] mock_env = true`
to use a synthetic reading on dev machines (no hardware) — this is also the checked-in
`config.example.ini` default. The sensor sits behind the generic `IEnvSensor` interface
`i2cdetect -y N` (the SHT41 answers at `0x44`/`68`). `i2c_addr` accepts either form — `0x44` hex or
`68` decimal. The backend (`Sht41EnvSensor`) polls at `period_ms`, discarding any sample that fails
the SHT4x CRC-8 check (decode lives in the pure, unit-tested
[Sht41Protocol](../include/fgc/sensors/Sht41Protocol.h)); once nothing valid arrives within **2× the
period**, `sample()` reports absence rather than a frozen value, which is what turns the panel from
`live` to `no fix`. Set `[Features] mock_env = true` (or pass `--mock-env`, which also implies
`enable_env`) to use a synthetic reading on dev machines with no hardware. The sensor sits behind the
generic `IEnvSensor` interface
([include/fgc/IEnvSensor.h](../include/fgc/IEnvSensor.h)), so swapping in a different ambient sensor
later means adding a new backend, not touching `Application`, the UI, or MQTT.
@ -177,6 +181,7 @@ Parsed by Boost.Program_options ([main.cpp](../main.cpp)). Flags override `[Feat
| `--no-mqtt` | Disable MQTT (use the null channel) |
| `--mock-camera` | Use the simulated camera |
| `--mock-serial` | Use the simulated motor controller |
| `--mock-env` | Use the simulated ambient temp/humidity sensor (implies `[Features] enable_env`) |
| `--tui` | Show the full-screen terminal dashboard (overrides `[UI] enable_tui`) |
| `--no-tui` | Force the headless line console (overrides config; wins over `--tui`) |
| `--log-level <lvl>` | `trace`/`debug`/`info`/`warn`/`error`/`off` |
@ -237,9 +242,9 @@ operation is unchanged and remains the default — the same binary runs under sy
logs on stdout.
Dashboard panels: **Gimbal** (per-axis state, heading, encoder counts, flag badges, target),
**Sensors** (the **Xsens MTi** shows live roll/pitch/yaw + temp once `enable_imu`; the ambient
**SHT41** shows live temp/humidity once `enable_env` — see [known-issues.md](known-issues.md) for
its hardware-bring-up status), **Camera** (count, capture state, rate, last capture), **Connectivity** (MQTT state,
**Sensors** (the **Xsens MTi** shows live roll/pitch/yaw once `enable_imu`; the ambient
**SHT41** shows live temp/humidity once `enable_env`. The SHT41's is the **only** temperature on the main window: the MTi's
device-internal temp is diagnostic detail and appears solely in the expanded view), **Camera** (count, capture state, rate, last capture), **Connectivity** (MQTT state,
broker, tower, control mode, target heading). Adding a panel later is a struct in `UiSnapshot.h` plus
one node in [src/ui/TuiUi.cpp](../src/ui/TuiUi.cpp).
@ -248,11 +253,15 @@ one node in [src/ui/TuiUi.cpp](../src/ui/TuiUi.cpp).
- **Gimbal** (`g`) — both axes side by side: live telemetry, the decoded firmware register **dump**
(`d` requests a fresh one), the homing limits, and the **last calibration** result (per-axis
`counts_per_deg` / `zero_count` / R² / age).
- **IMU** (`i`) — every MTi channel with units: orientation (°), acceleration (m/s²), rate-of-turn
(rad/s), magnetic field (a.u.), temperature, sample counter, plus an **IMU CONFIG** section
- **Sensors** (`i`) — both sensors, in headed sections so every reading is attributable.
**MTi**: every channel with units — orientation (°), acceleration (m/s²), rate-of-turn
(rad/s), magnetic field (a.u.), `TEMP (internal)`, sample counter, plus an **IMU CONFIG** section
(read back from the device at startup): product code, firmware, device ID, output mode/format,
calibration channels, sample rate, and the **Xsens Kalman Filter (XKF) profile** list — every
profile the device supports, by name, with the active one marked `●` (selected).
**SHT41**: `TEMP (ambient)`, humidity, the age of the last sample, and the configured I2C bus
(device, address, poll period — hidden for the mock). Empty states name what to enable
(`enable_env` / `--mock-env`) or, when enabled but silent, the staleness window that was missed.
**Activity strip** — a compact section between the log and the key bar that shows the
currently-running special operation with live progress (`test`, `gimbal calib`, homing, capture

View File

@ -94,8 +94,14 @@ persistence for LPM + usbfs, and verify a full sweep captures white-balanced fra
yet (not homed / no `gimbal dump`), nudge requests one and does nothing that press — it never falls
back to the configured degree clamps (which, if `*_min_deg`/`*_max_deg` were unset, produced absurd
±100000° steps).
- Ambient temperature/humidity (SHT41, `IEnvSensor`/`Sht41EnvSensor`/`MockEnvSensor`) is
integrated in software — config-gated (`[Features] enable_env`/`mock_env`, `[Env]`), Sensors
panel + MQTT `Env` topic wired — but defaults to `mock_env = true` in the checked-in example
config. Bus/address bring-up and validation against the physical sensor on the LattePanda's I2C
bus is still pending; flip `mock_env = false` on the deployed `config.ini` once confirmed.
- Ambient temperature/humidity (SHT41, `IEnvSensor`/`Sht41EnvSensor`/`MockEnvSensor`) is fully
integrated and **validated against the physical sensor on the LattePanda** — config-gated
(`[Features] enable_env`, `[Env]`), Sensors panel + expanded `i` view + MQTT `Env` topic wired.
It is **off by default** (`enable_env = false`), so a config without an `[Env]` section shows the
panel as `pending` — that status means "no driver constructed", not "sensor unreachable"; an
enabled-but-silent sensor reads `no fix` instead. Dev machines without the hardware should use
`--mock-env` (implies `enable_env`) rather than editing config.
- `[Env] i2c_addr` used to be parsed with a decimal-only `std::stoi`, so the `0x44` form every
datasheet and `i2cdetect` uses silently became address `0x00` and the sensor never answered. It now
accepts decimal or `0x` hex (`getIntAutoBase` in `Config.cpp`, covered by a test). Other integer
config keys stay decimal-only on purpose, so a leading zero never turns into octal.

View File

@ -19,9 +19,10 @@ Per-file reference for the refactored tree, plus the shared data structures.
| [include/fgc/Calibration.h](../include/fgc/Calibration.h), [src/core/Calibration.cpp](../src/core/Calibration.cpp) | `linearFit` (least-squares, R²) + `circularMeanDeg` for the IMU-referenced calibration |
| [include/fgc/CalibrationRoutine.h](../include/fgc/CalibrationRoutine.h), [src/core/CalibrationRoutine.cpp](../src/core/CalibrationRoutine.cpp) | `gimbal calib` worker thread: home-if-needed → pitch sweep at the first yaw position → pitch 0° → switch IMU to a no-mag XKF profile → IMU no-rotation + heading reset → yaw sweep, fitting degrees↔counts; tunable via `CalibParams`; exposes `progress()`/`report()`/`takeResult()` |
| [include/fgc/MtiProtocol.h](../include/fgc/MtiProtocol.h), [src/core/MtiProtocol.cpp](../src/core/MtiProtocol.cpp) | Xsens MTi binary protocol: `MtiFramer` (checksum framing), config-message builders, `parseMTData``ImuSample` (temp/acc/gyr/mag/euler), config-readback query builders + `applyImuConfigAck`/`finalizeImuConfig` → `ImuDeviceConfig` (product/firmware/device-id/output mode+settings/sample rate/**XKF scenario**); orientation-control builders `msgSetNoRotation` (gyro-bias update) + `msgResetOrientation` (heading reset / store) + `msgSetFilterProfile` (select XKF profile) + `pickNoMagProfile` (choose a magnetometer-free profile from the available list) |
| [include/fgc/sensors/Sht41Protocol.h](../include/fgc/sensors/Sht41Protocol.h), [src/sensors/Sht41Protocol.cpp](../src/sensors/Sht41Protocol.cpp) | Sensirion SHT4x wire protocol, pure: command bytes, `sht41Crc8` (poly 0x31/init 0xFF), `decodeSht41Measurement` (6-byte response → `Sht41Reading`, CRC-checked, raw→°C/%RH with RH clamped 0..100) |
| [include/fgc/CaptureScheduler.h](../include/fgc/CaptureScheduler.h), [src/core/CaptureScheduler.cpp](../src/core/CaptureScheduler.cpp) | Capture state machine over the interfaces; injectable clock; `setGeometry` adopts a recalibration |
| [include/fgc/Application.h](../include/fgc/Application.h), [src/core/Application.cpp](../src/core/Application.cpp) | Factory (real vs mock, headless vs TUI), wiring, control loop, `gimbal …` commands, background-result polling, `buildSnapshot()` |
| [include/fgc/ui/UiSnapshot.h](../include/fgc/ui/UiSnapshot.h), [src/ui/UiSnapshot.cpp](../src/ui/UiSnapshot.cpp) | Plain-data view model (incl. `ImuView`, `ActivityView`, `CalibResultView`, `DumpView`) + pure formatting helpers (state label/colour, degrees, time-ago, pending-sensors) |
| [include/fgc/ui/UiSnapshot.h](../include/fgc/ui/UiSnapshot.h), [src/ui/UiSnapshot.cpp](../src/ui/UiSnapshot.cpp) | Plain-data view model (incl. `ImuView`, `EnvView`, `ActivityView`, `CalibResultView`, `DumpView`) + pure formatting helpers (state label/colour, degrees, time-ago, pending-sensors) |
| [include/fgc/ui/HeadlessUi.h](../include/fgc/ui/HeadlessUi.h), [src/ui/HeadlessUi.cpp](../src/ui/HeadlessUi.cpp) | Default line console: stdin → command sink; logs via the default stdout/stderr writer |
| [ini.c](../ini.c), [ini.h](../ini.h) | Bundled third-party inih INI parser |
@ -30,9 +31,10 @@ Per-file reference for the refactored tree, plus the shared data structures.
| File | Interface | Shared structs |
|------|-----------|----------------|
| [include/fgc/IMotorController.h](../include/fgc/IMotorController.h) | `IMotorController` | `MotorTelemetry` |
| [include/fgc/IControlChannel.h](../include/fgc/IControlChannel.h) | `IControlChannel` | `ControlCommand`, `CamEvent` |
| [include/fgc/IControlChannel.h](../include/fgc/IControlChannel.h) | `IControlChannel` | `ControlCommand`, `CamEvent`, `EnvEvent` |
| [include/fgc/ICameraSource.h](../include/fgc/ICameraSource.h) | `ICameraSource` | `Frame` |
| [include/fgc/IImuSource.h](../include/fgc/IImuSource.h) | `IImuSource` (incl. `config()`, `refreshConfig()`, `noRotation()`, `headingReset()`, `setFilterProfile()`) | `ImuSample` (from `MtiProtocol.h`) |
| [include/fgc/IEnvSensor.h](../include/fgc/IEnvSensor.h) | `IEnvSensor` (`connected()`, `sample()`, `name()`) | `EnvSample` |
| [include/fgc/ui/IUserInterface.h](../include/fgc/ui/IUserInterface.h) | `IUserInterface` | `UiSnapshot` |
## Real implementations (SDK-gated)
@ -41,6 +43,8 @@ Per-file reference for the refactored tree, plus the shared data structures.
|------|-----------|-----------|
| [src/serial/SerialMotorController.cpp](../src/serial/SerialMotorController.cpp) | `IMotorController` over Boost.Asio serial (pImpl) | always |
| [src/serial/MtiImuSource.cpp](../src/serial/MtiImuSource.cpp) | `IImuSource` over Boost.Asio serial: configures the MTi to Euler+calibrated, reads back its config (`config()` → `ImuDeviceConfig`), then frames the MTData stream | always |
| [src/sensors/I2cBus.cpp](../src/sensors/I2cBus.cpp) | Thin `/dev/i2c-N` wrapper (open/close, `write`, `writeRead` via `I2C_SLAVE` ioctl) | always |
| [src/sensors/Sht41EnvSensor.cpp](../src/sensors/Sht41EnvSensor.cpp) | `IEnvSensor` over I2C (pImpl): soft-reset, poll thread at `[Env] period_ms`, decode via `Sht41Protocol`, staleness = no valid sample within 2× the period | always |
| [src/mqtt/MqttControlChannel.cpp](../src/mqtt/MqttControlChannel.cpp) | `IControlChannel` over Eclipse Paho | `WITH_MQTT` |
| [src/ui/TuiUi.cpp](../src/ui/TuiUi.cpp) | `IUserInterface` over FTXUI: panels, key bar, log pane | `WITH_TUI` |
| [src/camera/VimbaCameraSource.cpp](../src/camera/VimbaCameraSource.cpp) | `ICameraSource` over Vimba X (pImpl) | `WITH_VIMBA` |
@ -55,6 +59,7 @@ Per-file reference for the refactored tree, plus the shared data structures.
| [include/fgc/mock/NullControlChannel.h](../include/fgc/mock/NullControlChannel.h) | No-op channel; auto-sweep |
| [include/fgc/mock/MockCameraSource.h](../include/fgc/mock/MockCameraSource.h) | Synthetic gradient frames |
| [include/fgc/mock/MockImuSource.h](../include/fgc/mock/MockImuSource.h) | Synthetic IMU (sinusoidal orientation, gravity on accZ) |
| [include/fgc/mock/MockEnvSensor.h](../include/fgc/mock/MockEnvSensor.h) | Synthetic ambient sensor (slow sinusoidal temp/humidity, never stale); `--mock-env` |
## Entry point & scripts
@ -80,6 +85,16 @@ firmware `ST Y:...[ P:...]` line; degrees are derived via `Geometry`.
`tower`, `camera` (RGB/ACR/NIR), `heading_decideg` (yaw×10), `pitch_decideg` (pitch×10), `timestamp_ms`.
Serialized to the CamEvent JSON payload (see [mqtt-api.md](mqtt-api.md)).
### `EnvEvent` ([IControlChannel.h](../include/fgc/IControlChannel.h))
`tower`, `temp_c`, `humidity_pct`, `timestamp_ms`. Published once per **fresh** sample (deduplicated
on `timestamp_ms`, not per control-loop tick) to the `Env` topic — see [mqtt-api.md](mqtt-api.md).
### `EnvSample` ([IEnvSensor.h](../include/fgc/IEnvSensor.h))
One ambient reading: `valid`, `temp_c` (°C), `humidity_pct` (0..100), `timestamp_ms` (epoch ms).
`IEnvSensor::sample()` returns `nullopt` rather than a stale sample once nothing valid has arrived
within 2× the configured poll period, so a silently dead sensor reads as absent, not as a frozen
value. Surfaced as `EnvView` in the TUI (`i` view) and as `SensorsView::env` in the compact panel.
### `Frame` ([ICameraSource.h](../include/fgc/ICameraSource.h))
Owned pixel buffer + `width`, `height`, `channels` (1 or 3), `timestamp_ms`, `cam_id`.

View File

@ -7,13 +7,17 @@ apply unchanged). **Status: planned — blocked on component.** When a component
lands, promote its entry into [test-command.md](test-command.md) and the taxonomy
table.
## 1. `env / *` — environmental sensing — *blocked on: SHT41 hardware bring-up*
## 1. `env / *` — environmental sensing — *unblocked: ready to implement*
The ambient sensor is now an SHT41 on the LattePanda's **own I2C bus** (not the Arduino) — see
The ambient sensor is an SHT41 on the LattePanda's **own I2C bus** (not the Arduino) — see
[configuration.md](configuration.md) `[Env]`. The software side has landed: `IEnvSensor` /
`Sht41EnvSensor` / `MockEnvSensor`, config-gated, wired into the Sensors panel and the MQTT `Env`
topic. What's still blocking this self-test leaf is validating the real backend against physical
hardware (bus/address confirmation, a run with `mock_env = false`).
`Sht41EnvSensor` / `MockEnvSensor`, config-gated, wired into the Sensors panel, the expanded `i`
view and the MQTT `Env` topic; the wire protocol is pure and unit-tested
([Sht41Protocol](../include/fgc/sensors/Sht41Protocol.h), `tests/test_sht41.cpp`). The real backend
has been **validated against the physical sensor on the LattePanda**, so this leaf is no longer
blocked — only unimplemented. Note the two distinct absence states it should tell apart:
`pending` (driver never constructed — `enable_env` off) vs `no fix` (enabled but no valid sample
within 2× `period_ms`).
- **`env / sht41`** — _Healthy:_ sensor responds every poll (`period_ms`); temperature and humidity
in plausible range; values update (not stuck); CRC-8 failures stay rare. _Checks:_ read the sensor

View File

@ -18,6 +18,7 @@ struct RuntimeOptions {
std::optional<bool> use_mqtt;
std::optional<bool> mock_camera;
std::optional<bool> mock_serial;
std::optional<bool> mock_env; // implies [Features] enable_env
std::optional<bool> use_tui; // --tui / --no-tui; unset => [UI] enable_tui
std::string log_level; // empty => default

View File

@ -0,0 +1,47 @@
#pragma once
#include <cstdint>
#include <optional>
#include <vector>
namespace fgc {
// Sensirion SHT4x (SHT41) I2C protocol helpers: the command bytes, the CRC-8
// the sensor appends to each 16-bit word, and the decode from a raw 6-byte
// measurement response to physical units. Kept pure (no I/O) so it is
// unit-testable and lives in fgc_core — mirrors MtiProtocol / TelemetryParser.
// The I/O half (bus, poll thread, staleness) stays in Sht41EnvSensor.
//
// Measurement response layout, big-endian:
// [0..1] temperature raw [2] CRC of bytes 0..1
// [3..4] humidity raw [5] CRC of bytes 3..4
// Soft reset; the datasheet asks for ~1 ms to settle afterwards.
inline constexpr uint8_t kSht41CmdSoftReset = 0x94;
// Measure temperature + RH, high precision; ~10 ms conversion time.
inline constexpr uint8_t kSht41CmdMeasureHighPrec = 0xFD;
// Bytes in a measurement response.
inline constexpr size_t kSht41ResponseBytes = 6;
// SHT4x CRC-8: polynomial 0x31, init 0xFF, no reflection, no final XOR.
// Datasheet test vector: {0xBE, 0xEF} -> 0x92.
uint8_t sht41Crc8(const uint8_t* data, size_t len);
// One decoded measurement in physical units.
struct Sht41Reading {
float temp_c = 0.0f;
float humidity_pct = 0.0f;
};
// Decode a measurement response. Returns nullopt if the response is not
// kSht41ResponseBytes long or either word fails its CRC — a corrupt frame must
// be discarded rather than reported as a reading, since a garbled word is
// indistinguishable from a plausible temperature once converted.
//
// Conversions (datasheet): T[°C] = -45 + 175 * raw/65535,
// RH[%] = -6 + 125 * raw/65535, with RH clamped to 0..100 (the raw formula
// slightly overshoots both ends by design).
std::optional<Sht41Reading> decodeSht41Measurement(const std::vector<uint8_t>& rx);
} // namespace fgc

View File

@ -76,12 +76,14 @@ struct SensorGroup {
// The Sensors panel, split by source so it is clear which parameters come from
// which device. Each group is filled with pending placeholders until its driver
// lands. NOTE: the MTi's Temp is the device's *internal* temperature; the env
// sensor's Temp (separate group) is *ambient* — deliberately kept apart. The
// env group's title/backing sensor is swappable (currently SHT41 over I2C; see
// IEnvSensor) without touching this struct.
// lands. NOTE: the only temperature here is the env sensor's *ambient* one — the
// MTi's *internal* device temperature is diagnostic detail and lives solely in
// the expanded view (ImuView::temp_c), so the compact panel never shows two
// temperatures the operator has to tell apart. The env group's title/backing
// sensor is swappable (currently SHT41 over I2C; see IEnvSensor) without
// touching this struct.
struct SensorsView {
SensorGroup imu; // Xsens MTi: Roll/Pitch/Yaw + internal temperature
SensorGroup imu; // Xsens MTi: Roll/Pitch/Yaw
SensorGroup env; // ambient temperature + humidity (SHT41)
};
@ -206,6 +208,21 @@ struct ImuView {
ImuConfigView config;
};
// Full ambient-sensor reading for the expanded Sensors view. This temperature is
// *ambient*, as distinct from ImuView::temp_c (the MTi's device-internal temp);
// the expanded view labels both so they are never confused.
struct EnvView {
bool enabled = false; // driver constructed (enable_env / --mock-env)
bool present = false; // a fresh (non-stale) sample is available
bool mock = false; // MockEnvSensor: the I2C bus config is meaningless
std::string name; // IEnvSensor::name() — "SHT41" / "SHT41 (mock)"
float temp_c = 0, humidity_pct = 0;
long long timestamp_ms = 0; // epoch ms, for formatTimeAgo()
std::string i2c_device; // from EnvConfig, for the bus row
unsigned i2c_addr = 0;
int period_ms = 0;
};
// Status of the currently-running special operation (calibration, diagnostics,
// homing, capture) plus the last completed result, for the activity strip below
// the log. The result block persists until replaced so it never scrolls away.
@ -271,6 +288,7 @@ struct UiSnapshot {
std::vector<LogLine> log;
DumpView dump;
ImuView imu;
EnvView env;
ActivityView activity;
CalibResultView calib;
DiagResultView diag;

View File

@ -21,6 +21,8 @@ int main(int argc, char* argv[]) {
("no-mqtt", po::bool_switch(), "disable MQTT (use a null control channel)")
("mock-camera", po::bool_switch(), "use a simulated camera (no hardware)")
("mock-serial", po::bool_switch(), "use a simulated motor controller (no hardware)")
("mock-env", po::bool_switch(),
"use a simulated ambient temp/humidity sensor (implies enable_env)")
("tui", po::bool_switch(), "show the full-screen terminal dashboard")
("no-tui", po::bool_switch(), "force the headless line console (overrides config)")
("log-level", po::value<std::string>(), "trace|debug|info|warn|error|off")
@ -66,6 +68,7 @@ int main(int argc, char* argv[]) {
if (vm["no-mqtt"].as<bool>()) opts.use_mqtt = false;
if (vm["mock-camera"].as<bool>()) opts.mock_camera = true;
if (vm["mock-serial"].as<bool>()) opts.mock_serial = true;
if (vm["mock-env"].as<bool>()) opts.mock_env = true;
if (vm["tui"].as<bool>()) opts.use_tui = true;
if (vm["no-tui"].as<bool>()) opts.use_tui = false; // --no-tui wins
if (vm.count("log-level")) opts.log_level = vm["log-level"].as<std::string>();

View File

@ -267,8 +267,12 @@ struct Application::Impl {
}
std::unique_ptr<IEnvSensor> makeEnv() {
if (!cfg.features.enable_env) return nullptr; // sensors panel stays "pending"
if (cfg.features.mock_env) return std::make_unique<MockEnvSensor>();
// --mock-env implies enable_env: the sensor is off by default, so without
// that the flag would silently do nothing.
const bool force_mock = opts.mock_env.value_or(false);
if (!cfg.features.enable_env && !force_mock)
return nullptr; // sensors panel stays "pending"
if (force_mock || cfg.features.mock_env) return std::make_unique<MockEnvSensor>();
if (cfg.env.i2c_device.empty()) {
LOG_WARN << "Env sensor enabled but [Env] i2c_device is empty; disabling";
return nullptr;
@ -403,15 +407,16 @@ struct Application::Impl {
}
s.imu.temp_c = m->temp_c;
s.imu.sample_counter = m->sample_counter;
// Compact MTi subsection: Roll/Pitch/Yaw + the device's internal temp.
// Compact MTi subsection: Roll/Pitch/Yaw only. The internal temp
// stays in s.imu (expanded view) so the main window's single
// temperature is unambiguously the SHT41's ambient one.
auto& g = s.sensors.imu;
g.present = true;
g.status = "live";
if (g.fields.size() >= 4) {
if (g.fields.size() >= 3) {
setField(g.fields[0], fmt1(m->roll_deg));
setField(g.fields[1], fmt1(m->pitch_deg));
setField(g.fields[2], fmt1(m->yaw_deg));
setField(g.fields[3], fmt1(m->temp_c)); // MTi internal temp
}
} else {
s.sensors.imu.status = "no fix";
@ -428,7 +433,21 @@ struct Application::Impl {
f.value = v;
f.present = true;
};
// Identity and bus config are set whether or not a sample is available,
// so the expanded view can still say what the sensor is and where it
// should be when it goes quiet.
s.env.enabled = true;
s.env.mock = opts.mock_env.value_or(cfg.features.mock_env);
s.env.name = env->name();
s.env.i2c_device = cfg.env.i2c_device;
s.env.i2c_addr = cfg.env.i2c_addr;
s.env.period_ms = cfg.env.period_ms;
if (auto m = env->sample()) {
s.env.present = true;
s.env.temp_c = m->temp_c;
s.env.humidity_pct = m->humidity_pct;
s.env.timestamp_ms = m->timestamp_ms;
auto& g = s.sensors.env;
g.present = true;
g.status = "live";

View File

@ -34,6 +34,27 @@ int getInt(const std::map<std::string, std::string>& kv, const std::string& key,
}
}
// Like getInt, but accepts an "0x"-prefixed value too. Only for I2C addresses,
// which every datasheet, `i2cdetect` and our own docs write in hex: plain
// std::stoi() stops at the 'x' and silently yields 0, so `i2c_addr = 0x44`
// would configure address 0x00 and the sensor would never answer. Kept separate
// from getInt so no other key gains surprise octal ("010" -> 8) parsing.
int getIntAutoBase(const std::map<std::string, std::string>& kv, const std::string& key,
int fallback) {
auto it = kv.find(key);
if (it == kv.end() || it->second.empty()) return fallback;
try {
size_t consumed = 0;
const std::string& v = it->second;
int out = std::stoi(v, &consumed, v.rfind("0x", 0) == 0 || v.rfind("0X", 0) == 0 ? 16 : 10);
if (consumed != v.size()) throw std::invalid_argument("trailing characters");
return out;
} catch (const std::exception&) {
throw std::runtime_error("Config key '" + key + "' must be an integer (decimal or 0x hex)"
", got '" + it->second + "'");
}
}
double getDouble(const std::map<std::string, std::string>& kv, const std::string& key,
double fallback) {
auto it = kv.find(key);
@ -188,7 +209,8 @@ AppConfig ConfigLoader::fromMap(const std::map<std::string, std::string>& kv) {
cfg.imu.baud = static_cast<unsigned>(getInt(kv, "IMU.baud", cfg.imu.baud));
cfg.env.i2c_device = get(kv, "Env.i2c_device", cfg.env.i2c_device);
cfg.env.i2c_addr = static_cast<unsigned>(getInt(kv, "Env.i2c_addr", cfg.env.i2c_addr));
cfg.env.i2c_addr = static_cast<unsigned>(
getIntAutoBase(kv, "Env.i2c_addr", static_cast<int>(cfg.env.i2c_addr)));
cfg.env.period_ms = getInt(kv, "Env.period_ms", cfg.env.period_ms);
// [Test] + [TestProfile.<name>]: discover profiles by scanning the flattened

View File

@ -2,6 +2,7 @@
#include "fgc/Logger.h"
#include "fgc/sensors/I2cBus.h"
#include "fgc/sensors/Sht41Protocol.h"
#include <atomic>
#include <chrono>
@ -12,23 +13,12 @@ namespace fgc {
namespace {
constexpr uint8_t kCmdSoftReset = 0x94;
constexpr uint8_t kCmdMeasureHighPrec = 0xFD;
// The command bytes and the frame decode (CRC + raw->physical) live in
// Sht41Protocol, which is pure and unit-tested; this file owns only the I/O:
// bus access, poll timing, and the staleness rule.
constexpr auto kConversionDelay = std::chrono::milliseconds(10);
constexpr auto kSoftResetSettle = std::chrono::milliseconds(1);
// SHT4x CRC-8: poly 0x31, init 0xFF. Datasheet test vector: 0xBE 0xEF -> 0x92.
uint8_t crc8Sht41(const uint8_t* data, size_t len) {
uint8_t crc = 0xFF;
for (size_t i = 0; i < len; ++i) {
crc ^= data[i];
for (int b = 0; b < 8; ++b)
crc = (crc & 0x80) ? static_cast<uint8_t>((crc << 1) ^ 0x31)
: static_cast<uint8_t>(crc << 1);
}
return crc;
}
} // namespace
struct Sht41EnvSensor::Impl {
@ -47,27 +37,21 @@ struct Sht41EnvSensor::Impl {
clock::time_point last_ok{};
void readOnce() {
if (!bus.write({kCmdMeasureHighPrec})) return;
if (!bus.write({kSht41CmdMeasureHighPrec})) return;
std::this_thread::sleep_for(kConversionDelay);
std::vector<uint8_t> rx(6);
std::vector<uint8_t> rx(kSht41ResponseBytes);
if (!bus.writeRead({}, rx)) return;
if (crc8Sht41(rx.data(), 2) != rx[2] || crc8Sht41(rx.data() + 3, 2) != rx[5]) {
auto reading = decodeSht41Measurement(rx);
if (!reading) {
LOG_WARN << "SHT41: CRC mismatch, discarding sample";
return;
}
const uint16_t traw = static_cast<uint16_t>((rx[0] << 8) | rx[1]);
const uint16_t rhraw = static_cast<uint16_t>((rx[3] << 8) | rx[4]);
float temp_c = -45.0f + 175.0f * (static_cast<float>(traw) / 65535.0f);
float rh_pct = -6.0f + 125.0f * (static_cast<float>(rhraw) / 65535.0f);
if (rh_pct < 0.0f) rh_pct = 0.0f;
if (rh_pct > 100.0f) rh_pct = 100.0f;
std::lock_guard<std::mutex> lock(mutex);
latest.valid = true;
latest.temp_c = temp_c;
latest.humidity_pct = rh_pct;
latest.temp_c = reading->temp_c;
latest.humidity_pct = reading->humidity_pct;
latest.timestamp_ms = std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::system_clock::now().time_since_epoch())
.count();
@ -93,7 +77,7 @@ void Sht41EnvSensor::start() {
LOG_ERROR << "SHT41: failed to open I2C bus; sensor disabled";
return;
}
impl_->bus.write({kCmdSoftReset});
impl_->bus.write({kSht41CmdSoftReset});
std::this_thread::sleep_for(kSoftResetSettle);
impl_->running = true;
impl_->worker = std::thread([this] { impl_->run(); });

View File

@ -0,0 +1,32 @@
#include "fgc/sensors/Sht41Protocol.h"
namespace fgc {
uint8_t sht41Crc8(const uint8_t* data, size_t len) {
uint8_t crc = 0xFF;
for (size_t i = 0; i < len; ++i) {
crc ^= data[i];
for (int b = 0; b < 8; ++b)
crc = (crc & 0x80) ? static_cast<uint8_t>((crc << 1) ^ 0x31)
: static_cast<uint8_t>(crc << 1);
}
return crc;
}
std::optional<Sht41Reading> decodeSht41Measurement(const std::vector<uint8_t>& rx) {
if (rx.size() != kSht41ResponseBytes) return std::nullopt;
if (sht41Crc8(rx.data(), 2) != rx[2] || sht41Crc8(rx.data() + 3, 2) != rx[5])
return std::nullopt;
const uint16_t traw = static_cast<uint16_t>((rx[0] << 8) | rx[1]);
const uint16_t rhraw = static_cast<uint16_t>((rx[3] << 8) | rx[4]);
Sht41Reading out;
out.temp_c = -45.0f + 175.0f * (static_cast<float>(traw) / 65535.0f);
out.humidity_pct = -6.0f + 125.0f * (static_cast<float>(rhraw) / 65535.0f);
if (out.humidity_pct < 0.0f) out.humidity_pct = 0.0f;
if (out.humidity_pct > 100.0f) out.humidity_pct = 100.0f;
return out;
}
} // namespace fgc

View File

@ -561,8 +561,11 @@ Element gimbalDetailPanel(const GimbalView& g, const DumpView& dump, const Calib
vbox({header, separator(), hbox(std::move(cols)) | flex}));
}
// Full-screen IMU view (toggled with 'i'): every MTi channel with units.
Element imuDetailPanel(const ImuView& v) {
// Full-screen Sensors view (toggled with 'i'): every MTi channel with units,
// then the ambient sensor. The two devices get their own headed sections, and
// each temperature is labelled with its provenance ("internal" vs "ambient"),
// so the reading the main window shows is never confused with the MTi's.
Element sensorsDetailPanel(const ImuView& v, const EnvView& e) {
// Fixed-width, right-aligned to 2 decimals. The constant width keeps the sign
// column and decimal point from jumping as values cross zero or change digit
// count, so the readout stays steady instead of flickering. The width is kept
@ -592,6 +595,8 @@ Element imuDetailPanel(const ImuView& v) {
const float ori[3] = {v.roll_deg, v.pitch_deg, v.yaw_deg};
std::vector<Element> body;
body.push_back(text("MTi \xE2\x80\x94 orientation & device-internal temperature") | bold
| color(Color::Magenta));
if (!v.present) {
body.push_back(text("(no IMU data)") | color(Color::Red) | bold);
body.push_back(text("check [Features] enable_imu and [IMU] device, or --mock-imu") | dim);
@ -611,12 +616,59 @@ Element imuDetailPanel(const ImuView& v) {
body.push_back(vecRow("MAG FIELD", "a.u.", v.mag, Color::Cyan));
body.push_back(separator());
body.push_back(hbox({
text("TEMP") | dim | size(WIDTH, EQUAL, 14),
text("TEMP (internal)") | dim | size(WIDTH, EQUAL, 16),
text(f2(v.temp_c, 6) + " \xC2\xB0""C") | bold | size(WIDTH, EQUAL, 18),
text("sample #" + std::to_string(v.sample_counter)) | dim,
}));
}
// AMBIENT section: the SHT41 (or whatever IEnvSensor backs it — the name comes
// from the driver, so a mock announces itself). This is the temperature the
// main window shows. It sits directly under the MTi's live rows and ABOVE the
// static IMU CONFIG block: on an 80x24 terminal the body overflows once the
// MTi reports its configuration, and the live readings from both sensors are
// what must stay on screen — the never-changing device config is what gives way
// (and is still reachable by scrolling).
{
auto envRow = [](const std::string& k, Element val) {
return hbox({text(k) | dim | size(WIDTH, EQUAL, 16), std::move(val)});
};
auto f1 = [](float x) {
char b[24];
std::snprintf(b, sizeof(b), "%.1f", x);
return std::string(b);
};
body.push_back(separator());
body.push_back(text((e.name.empty() ? std::string("SHT41") : e.name) +
" \xE2\x80\x94 ambient (I2C)") | bold | color(Color::Magenta));
if (!e.enabled) {
body.push_back(text("(env sensor disabled)") | dim);
body.push_back(
text("enable with [Features] enable_env and [Env] i2c_device, or --mock-env")
| dim);
} else if (!e.present) {
body.push_back(text("(no reading)") | color(Color::Red) | bold);
// Kept short enough to fit an 80-column terminal without truncating.
body.push_back(text("no sample within 2x the " + std::to_string(e.period_ms) +
" ms poll period \xE2\x80\x94 check wiring/bus") | dim);
} else {
long long now = std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::system_clock::now().time_since_epoch()).count();
body.push_back(envRow("TEMP (ambient)",
text(f2(e.temp_c, 6) + " \xC2\xB0""C") | bold));
body.push_back(envRow("HUMIDITY", text(f1(e.humidity_pct) + " %RH") | bold));
body.push_back(envRow("Last sample", text(formatTimeAgo(now, e.timestamp_ms)) | dim));
}
// The configured bus is meaningless for the mock, so only show it for real
// hardware — where it is exactly what you need to debug a missing reading.
if (e.enabled && !e.mock) {
char addr[16];
std::snprintf(addr, sizeof(addr), "0x%02X", e.i2c_addr);
body.push_back(envRow("Bus", text(e.i2c_device + " @ " + addr + ", every " +
std::to_string(e.period_ms) + " ms") | dim));
}
}
// IMU CONFIG section (device configuration read back at startup). Shown
// whenever it is known, even if the live stream is offline.
const auto& c = v.config;
@ -653,11 +705,20 @@ Element imuDetailPanel(const ImuView& v) {
}
}
Element status = v.present ? (text(" MTi live ") | color(Color::Green) | bold)
Element imu_status = v.present ? (text(" MTi live ") | color(Color::Green) | bold)
: (text(" MTi offline ") | color(Color::Red) | bold);
return window(text(" IMU (i/Esc:close r:refresh config) ") | bold | color(Color::Magenta),
vbox({hbox({status, filler()}), separator(),
vbox(std::move(body)) | flex}));
const std::string env_name = e.name.empty() ? "SHT41" : e.name;
Element env_status = !e.enabled
? (text(" " + env_name + " disabled ") | dim)
: (e.present
? (text(" " + env_name + " live ") | color(Color::Green) | bold)
: (text(" " + env_name + " no reading ") | color(Color::Red) |
bold));
// yframe so a long body (MTi channels + config + ambient) stays reachable on a
// short terminal instead of being silently cut off, as the camera view does.
return window(text(" SENSORS (i/Esc:close r:refresh config) ") | bold | color(Color::Magenta),
vbox({hbox({imu_status, text(" "), env_status, filler()}), separator(),
vbox(std::move(body)) | yframe | flex}));
}
} // namespace
@ -751,7 +812,7 @@ void TuiUi::uiLoop() {
} else {
bottom = hbox({
keyHint("s", "Start"), keyHint("x", "Stop"), keyHint("h", "Home"),
keyHint("g", "Gimbal"), keyHint("i", "IMU"), keyHint("c", "Scan"),
keyHint("g", "Gimbal"), keyHint("i", "Sensors"), keyHint("c", "Scan"),
keyHint("p", "Pause"), keyHint("r", "Refresh"),
keyHint("\xE2\x86\x90\xE2\x86\x92\xE2\x86\x91\xE2\x86\x93", "Nudge"),
keyHint(":", "Cmd"), keyHint("?", "Help"), filler(), keyHint("q", "Quit"),
@ -768,7 +829,8 @@ void TuiUi::uiLoop() {
return vbox({header, separator(),
gimbalDetailPanel(s.gimbal, s.dump, s.calib, s.diag) | flex, bottom});
case Overlay::Sensors:
return vbox({header, separator(), imuDetailPanel(s.imu) | flex, bottom});
return vbox({header, separator(),
sensorsDetailPanel(s.imu, s.env) | flex, bottom});
case Overlay::Cameras:
return vbox({header, separator(), cameraDetailPanel(s.capture) | flex, bottom});
default: {

View File

@ -49,13 +49,15 @@ std::string formatTimeAgo(long long now_ms, long long then_ms) {
SensorsView pendingSensorsView() {
SensorsView v;
// Xsens MTi-28 AHRS: drift-free Euler orientation + device internal temp.
// Xsens MTi-28 AHRS: drift-free Euler orientation. The device's internal
// temperature is deliberately NOT here — it is diagnostic detail shown only
// in the expanded view, so the sole temperature on the main window is the
// SHT41's ambient one below.
v.imu.title = "MTi (orientation)";
v.imu.status = "pending";
v.imu.fields.push_back({"Roll", "--.-", "\xC2\xB0", false});
v.imu.fields.push_back({"Pitch", "--.-", "\xC2\xB0", false});
v.imu.fields.push_back({"Yaw", "--.-", "\xC2\xB0", false});
v.imu.fields.push_back({"Temp", "--.-", "\xC2\xB0""C", false}); // MTi internal
// SHT41 temperature & humidity (Adafruit, I2C on the LattePanda's own bus):
// ±0.2 °C, ±1.8 %RH (ambient).
v.env.title = "SHT41 (ambient)";

View File

@ -29,6 +29,7 @@ add_executable(fgc_tests
test_scangrid.cpp
test_uisnapshot.cpp
test_mtiprotocol.cpp
test_sht41.cpp
test_dumpparser.cpp
test_helptext.cpp
test_diagparser.cpp

View File

@ -60,6 +60,17 @@ TEST_CASE("ConfigLoader maps [Env]/env feature flags") {
CHECK(c.env.period_ms == 5000);
}
TEST_CASE("Env.i2c_addr accepts the hex form every datasheet uses") {
// Plain std::stoi() stops at the 'x' and returns 0, which would silently
// configure address 0x00 — the sensor would then never answer.
CHECK(ConfigLoader::fromMap({{"Env.i2c_addr", "0x44"}}).env.i2c_addr == 0x44);
CHECK(ConfigLoader::fromMap({{"Env.i2c_addr", "0X44"}}).env.i2c_addr == 0x44);
CHECK(ConfigLoader::fromMap({{"Env.i2c_addr", "68"}}).env.i2c_addr == 68);
// Decimal stays decimal: no surprise octal for a leading zero.
CHECK(ConfigLoader::fromMap({{"Env.i2c_addr", "010"}}).env.i2c_addr == 10);
CHECK_THROWS(ConfigLoader::fromMap({{"Env.i2c_addr", "0x4g"}}));
}
TEST_CASE("environment overrides file credentials") {
setenv("FGC_MQTT_USER", "envuser", 1);
AppConfig c = ConfigLoader::fromMap({{"Network.mqtt_user", "fileuser"}});

100
tests/test_sht41.cpp Normal file
View File

@ -0,0 +1,100 @@
#include <doctest/doctest.h>
#include "fgc/mock/MockEnvSensor.h"
#include "fgc/sensors/Sht41Protocol.h"
using namespace fgc;
namespace {
// Build a measurement response with correct CRCs for both words.
std::vector<uint8_t> frame(uint8_t t_msb, uint8_t t_lsb, uint8_t h_msb, uint8_t h_lsb) {
std::vector<uint8_t> rx = {t_msb, t_lsb, 0, h_msb, h_lsb, 0};
rx[2] = sht41Crc8(rx.data(), 2);
rx[5] = sht41Crc8(rx.data() + 3, 2);
return rx;
}
} // namespace
TEST_CASE("sht41Crc8 matches the datasheet test vector") {
// Sensirion's published check value — pins polynomial (0x31), init (0xFF)
// and the no-reflection/no-final-XOR choices all at once.
const uint8_t v[] = {0xBE, 0xEF};
CHECK(sht41Crc8(v, 2) == 0x92);
// CRCs computed independently for the frames used below; a byte-order or
// polynomial regression breaks these even if the datasheet vector survives.
const uint8_t a[] = {0x66, 0x66};
CHECK(sht41Crc8(a, 2) == 0x93);
const uint8_t zero[] = {0x00, 0x00};
CHECK(sht41Crc8(zero, 2) == 0x81);
const uint8_t full[] = {0xFF, 0xFF};
CHECK(sht41Crc8(full, 2) == 0xAC);
}
TEST_CASE("decodeSht41Measurement converts raw words to physical units") {
// 0x6666 is exactly 25 °C under T = -45 + 175 * raw/65535.
auto r = decodeSht41Measurement(frame(0x66, 0x66, 0x80, 0x00));
REQUIRE(r.has_value());
CHECK(r->temp_c == doctest::Approx(25.0).epsilon(0.001));
CHECK(r->humidity_pct == doctest::Approx(56.501).epsilon(0.001));
}
TEST_CASE("decodeSht41Measurement clamps humidity to 0..100") {
// The datasheet RH formula overshoots both ends by design: raw 0 yields
// -6 %RH and raw 65535 yields 119 %RH. Temperature is NOT clamped — its
// full -45..130 °C range is real.
auto lo = decodeSht41Measurement(frame(0x00, 0x00, 0x00, 0x00));
REQUIRE(lo.has_value());
CHECK(lo->temp_c == doctest::Approx(-45.0).epsilon(0.001));
CHECK(lo->humidity_pct == doctest::Approx(0.0));
auto hi = decodeSht41Measurement(frame(0xFF, 0xFF, 0xFF, 0xFF));
REQUIRE(hi.has_value());
CHECK(hi->temp_c == doctest::Approx(130.0).epsilon(0.001));
CHECK(hi->humidity_pct == doctest::Approx(100.0));
}
TEST_CASE("decodeSht41Measurement rejects corrupt frames instead of reporting them") {
// A garbled word converts to a perfectly plausible temperature, so the CRC
// is the only thing standing between line noise and a believed reading.
std::vector<uint8_t> bad_temp_crc = frame(0x66, 0x66, 0x80, 0x00);
bad_temp_crc[2] ^= 0xFF;
CHECK_FALSE(decodeSht41Measurement(bad_temp_crc).has_value());
std::vector<uint8_t> bad_rh_crc = frame(0x66, 0x66, 0x80, 0x00);
bad_rh_crc[5] ^= 0xFF;
CHECK_FALSE(decodeSht41Measurement(bad_rh_crc).has_value());
// A flipped data bit invalidates the word its CRC covers.
std::vector<uint8_t> flipped = frame(0x66, 0x66, 0x80, 0x00);
flipped[1] ^= 0x01;
CHECK_FALSE(decodeSht41Measurement(flipped).has_value());
// Short/absent reads (a bus hiccup) must not be indexed into.
CHECK_FALSE(decodeSht41Measurement({}).has_value());
CHECK_FALSE(decodeSht41Measurement({0x66, 0x66, 0x93}).has_value());
std::vector<uint8_t> too_long = frame(0x66, 0x66, 0x80, 0x00);
too_long.push_back(0x00);
CHECK_FALSE(decodeSht41Measurement(too_long).has_value());
}
TEST_CASE("MockEnvSensor reports plausible, varying ambient readings") {
MockEnvSensor env;
env.start();
CHECK(env.connected());
CHECK(env.name().find("SHT41") != std::string::npos);
auto s = env.sample();
REQUIRE(s.has_value());
CHECK(s->valid);
CHECK(s->timestamp_ms > 0);
// Indoor-plausible, and within the ranges the real decode can produce.
CHECK(s->temp_c > -45.0f);
CHECK(s->temp_c < 130.0f);
CHECK(s->humidity_pct >= 0.0f);
CHECK(s->humidity_pct <= 100.0f);
env.stop();
}

View File

@ -64,7 +64,7 @@ TEST_CASE("pendingSensorsView: grouped by sensor, all absent until drivers land"
CHECK_FALSE(v.env.present);
CHECK_FALSE(v.imu.title.empty());
CHECK_FALSE(v.env.title.empty());
CHECK(v.imu.fields.size() >= 3); // roll/pitch/yaw (+ device temp)
CHECK(v.imu.fields.size() >= 3); // roll/pitch/yaw
CHECK(v.env.fields.size() >= 2); // ambient temp + humidity
for (const auto* g : {&v.imu, &v.env}) {
for (const auto& f : g->fields) {
@ -73,3 +73,31 @@ TEST_CASE("pendingSensorsView: grouped by sensor, all absent until drivers land"
}
}
}
TEST_CASE("compact sensors panel shows exactly one temperature, the ambient one") {
SensorsView v = pendingSensorsView();
// The MTi's internal temperature is expanded-view-only, so the main window
// never shows two temperatures the operator has to attribute.
for (const auto& f : v.imu.fields) CHECK(f.label != "Temp");
auto findField = [](const SensorGroup& g, const std::string& label) -> const SensorField* {
for (const auto& f : g.fields)
if (f.label == label) return &f;
return nullptr;
};
const SensorField* temp = findField(v.env, "Temp");
const SensorField* humid = findField(v.env, "Humid");
REQUIRE(temp != nullptr);
REQUIRE(humid != nullptr);
CHECK(temp->unit == "\xC2\xB0""C");
CHECK(humid->unit == "%RH");
}
TEST_CASE("EnvView defaults to disabled with no reading") {
EnvView e;
CHECK_FALSE(e.enabled);
CHECK_FALSE(e.present);
CHECK_FALSE(e.mock);
CHECK(e.timestamp_ms == 0);
}