Canopy is a Qt6-based desktop application that provides a robust, user-friendly interface for uploading bytecode to CockpitVM-enabled devices. Built with the needs of system integrators in mind, it demonstrates modern C++ GUI development practices and embedded systems integration in order to provide basic upload and verification.
- UI Architecture: Progressive disclosure design with Simple/Advanced tab structure
- Protocol Integration: Direct reuse of validated CockpitVM Oracle libraries via symbolic linking
- Enhanced Diagnostics: Real-time protocol frame capture with error reporting
- Qt6 Implementation: Resource system, custom widgets, RAII patterns
- Device Discovery: Robust serial port enumeration with CockpitVM handshake identification
- Error Recovery: Comprehensive timeout handling and user guidance systems
Phase: CANOPY-1.4.x - Diagnostics Framework
Branch: main
(preliminary foundation)
Architecture: Validated Qt6 + C++23 with Oracle library integration
- ✅ CANOPY-1.1: Build system & Oracle integration with symbolic linking architecture
- ✅ CANOPY-1.3: Professional UI implementation with Qt Designer and resource system
- ✅ CANOPY-1.4.1: Advanced tab framework with progressive disclosure
- ✅ CANOPY-1.4.2: Enhanced bytecode analysis pane with hex viewer
- ✅ CANOPY-1.4.3: Protocol inspector with real-time frame capture
- ✅ Enhanced Bootloader Protocol V2.0: Complete A1/A2/B session architecture
- 🔨 Device Information Browser: STM32G4 hardware integration and flash readback
- 📋 Hardware Integration: Enhanced CockpitVM device bootloader protocols
- Protocol Library Reuse: Direct C++ integration via submodule configuration
- Frame Parser Integration: Universal parser for protocol-level debugging
- Qt6 Modern Practices: Signals/slots, resource system, designer workflows
- Error Handling:
std::expected
for explicit error propagation
A significant technical contribution is the design and specification of the Enhanced Bootloader Protocol V2.0, featuring:
- A1/A2/B Session Architecture: Clean separation of device info, flash read, and programming operations
- STM32G4 Hardware Integration: 64-bit alignment, bounds checking, verification
- Mealy-Moore State Machine: Deterministic flow with command-descriptive states to enhance clarity and reliability
- Protobuf Messaging: Structured communication with comprehensive error recovery
- Qt6 (Core, Widgets, SerialPort)
- CMake 3.20+
- C++23 compatible compiler
- CockpitVM-compatible device
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
./canopy
canopy-gui/
├── src/gui/ # Qt6 GUI implementation
├── src/protocol/ # CockpitVM protocol client
├── src/diagnostics/ # Frame capture & analysis
├── include/ # Public headers
├── resources/ # Qt resources (icons, UI files)
├── shared_libs/ # Oracle library integration
├── docs/ # Technical specifications
└── tests/ # Unit & integration tests
- Enhanced Bootloader Protocol V2.0: Complete protocol architecture
- Implementation Guides: Team-specific development guidance
- Advanced Diagnostics Plan: Framework architecture
- Phase-based validation: Each increment demonstrates working functionality
- Chunk-based development: Manageable development cycles with rollback capability
- Technical excellence: Focus on maintainable, extensible, well-documented code
- Progressive disclosure prevents cognitive overload while maintaining power-user access
- Qt Designer integration enables rapid UI iteration with path toward polished UI
- Symbolic linking enables seamless reuse of validated embedded libraries
- Frame-level protocol capture provides enhanced debugging visibility
- Hardware abstraction facilitates cross-platform device support
- Modern C++23 features (std::expected) improve error handling clarity
- RAII patterns prevent resource leaks in GUI applications
- Comprehensive documentation enables effective team collaboration
- Complete Device Information Browser pane implementation
- Enhance background processing with Qt threading
- Implement CockpitVM vm_bootloader enhancements
- Multi-device support and batch operations
- Advanced protocol analysis and performance metrics
- Cross-platform deployment (Windows, macOS, Linux)
- CockpitVM: Core hypervisor and Oracle testing framework
- vm_bootloader: device bootloader implementation
This project demonstrates embedded GUI development practices. Contributions welcome from developers interested in Qt6, embedded systems, or protocol design.
Canopy - Bridging the gap between embedded firmware and modern desktop applications