- State Machine Architecture: Robust state management for fuel station operations
- Peripheral Management: Support for displays, keyboards, card readers, pumps, and flow meters
- Multiple Display Support: ST7565 (128×64 LCD), ILI9488 (480×320 TFT), or Console emulation
- Hardware Display Support: Native integration with ST7565 and ILI9488 displays on ARM platforms
- Backend Integration: Real API integration for user authentication and transaction reporting
- Advanced Logging: Multi-level, multi-sink logging with JSON configuration
- Console Emulation: Full console-based testing and simulation environment
Use CMake + Ninja to build and debug in VS Code. Recommended steps (PowerShell):
# create build directory and configure
cmake -S . -B build -G "Ninja"
# build the project (Debug config)
cmake --build build --config Debug
# run the executable
.\build\bin\fuelflux.exeFuelFlux supports multiple display types. See DISPLAY_CONFIGURATION.md for details.
# Build with console emulation (default)
cmake -B build -DDISPLAY_TYPE=CONSOLE
# Build with ST7565 128x64 LCD
cmake -B build -DDISPLAY_TYPE=ST7565
# Build with ILI9488 480x320 TFT
cmake -B build -DDISPLAY_TYPE=ILI9488For production deployment:
# Build release version
cmake -S . -B build
cmake --build build --config Release
# Install to default location (build/install)
cmake --install build --config Release
# Or install to custom location
cmake --install build --config Release --prefix C:\FuelFlux├── src/ # Source files
├── include/ # Header files
├── config/ # Configuration files
│ └── logging.json # Logging configuration
├── docs/ # Documentation
├── logs/ # Runtime log files (created automatically)
└── build/ # Build artifacts
└── install/ # Default installation directory
In VS Code:
- Open the Run and Debug view and select "Debug fuelflux (CMake Build)".
- Start debugging (F5). The preLaunchTask will build the project first.
If you use MSVC toolchain instead of Ninja/gcc, change the -G "Ninja" to your generator and adjust miDebuggerPath in .vscode/launch.json to the Visual Studio debugger (or use cppvsdbg type).
- State Machine - Complete state machine workflow and transitions
- Hardware Integration - Display and NFC wiring/configuration
- Logging System - Detailed logging configuration and usage
- Installation Guide - Complete installation instructions
- C++17 compatible compiler
- CMake 3.16+
- spdlog - High performance logging library
- nlohmann/json - JSON parsing and configuration
- libgpiod (ARM/Linux only) - GPIO control for real hardware display
- freetype2 (ARM/Linux only) - Font rendering for real hardware display
Core dependencies are automatically fetched via CMake FetchContent. Hardware dependencies (libgpiod, freetype2) are only required when building with TARGET_REAL_HARDWARE=ON.