Commit graph

5 commits

Author SHA1 Message Date
f7818c63ec Refactors source file naming convention
Updates source file names to adhere to a consistent lowercase convention, improving code maintainability and readability.

This change ensures consistency across the codebase and aligns with common coding standards.
2026-02-21 08:23:21 +00:00
3a4e00a409 Adds basic logging and refactors main loop
Adds a basic logging system using std::clog with color codes for different log levels.
Refactors the main loop to use the logging system and improve readability.
Changes DixonNodeState to use atomic exchange for setting node status and logs status changes.
Removes the old main.cpp and adds a new one that uses a separate thread for signal handling.
Updates the CMakeLists.txt to link against gpiod and spdlog.
Moves version information into a version.txt file and creates a custom target to bump the version using a python script.
2026-02-20 15:27:42 +00:00
Russell Gilbert
c19687d91a Improves Dixon's shutdown and control flow.
Adds signal handling for graceful shutdown via SIGINT and SIGTERM.

Updates the control loop to be interruptible, allowing for a clean exit when a shutdown signal is received.

Changes the node state management to use an enum for clarity and better control the run states (starting, running, stopping, stopped).

The heartbeat is stopped when the node is stopping or stopped.

Also updates the line request to force an inactive state when claiming the pin.

Also updates the version number.
2026-02-12 09:53:29 +00:00
Russell Gilbert
2ccbd2f307 Uses atomic booleans for thread safety
Replaces mutex with atomic booleans in DixonNodeState for improved thread safety. This eliminates the need for explicit locking in the connected_ and brainRunning_ accessors, reducing overhead and potential for deadlocks.

Updates version file.
2026-02-11 07:56:57 +00:00
Russell Gilbert
14336c70d5 Adds basic robot control node structure
Introduces a basic structure for the robot control node. This includes:

- A central brain component that manages the robot's logic.
- A state management system using a singleton to ensure thread-safe access to shared data.
- A simple main loop that can be started and stopped.
- Initial CMakeLists.txt and gitignore configurations.

This provides a foundation for implementing robot control logic.
2025-12-28 10:04:23 +00:00