$ show mavlink/qgroundcontrol
QGroundControl (QGC) is a professional-grade, cross-platform ground control station for MAVLink-enabled unmanned aerial vehicles (UAVs), supporting both PX4 and ArduPilot autopilots. It provides full flight control, real-time telemetry monitoring, mission planning with complex survey/scan patterns, video streaming with hardware-accelerated decoding (D3D, Vulkan, DMABuf), log analysis (ULog, DataFlash), and vehicle configuration wizards. The architecture is a monolithic Qt/C++17 application with a QML-based UI, organized around a plugin system for firmware-specific features, a custom state machine framework for async workflows, and a type-safe Fact system for parameter management. It also includes extensive CI/CD infrastructure, a comprehensive test suite, and support for Android, iOS, macOS, Windows, and Linux. The repository is hybrid in that it contains documentation (vitepress), Python tooling for CI/code generation, and data-oriented log parsers, but its dominant character is a complex desktop/mobile application.
The LLM identified 3 files worth highlighting for reuse:
A reusable async state machine framework with base classes QGCAbstractState, QGCState, WaitStateBase, and many specialized states (ConditionalState, RetryState, SubMachineState, ParallelState, etc.). Includes timeout handling, guarded transitions, event queuing, and history recording. Extensively used for vehicle connection, calibration, and MAVLink command sequences. Could be extracted and applied to any Qt application requiring structured async flows with error recovery.
A generic type-safe parameter/value model (Fact, FactGroup, FactMetaData) with JSON metadata, live updates, and QML exposure via FactPanelController. Used throughout QGC for vehicle telemetry facts, settings, and mission item parameters. Provides a consistent pattern for exposing complex data models to QML with automatic change notifications and validation. Could be reused in any Qt/QML application needing structured data binding.
A clean static utility namespace wrapping SDL3 for cross-platform queries: OS detection, Android-specific capabilities (tablet, TV, DeX, Chromebook), power status, CPU/RAM info, runtime permission requests, and clipboard access. No internal state, simple string/bool/int return types, and safe defaults for non-Android platforms. Demonstrates a reusable pattern for encapsulating platform-specific APIs behind a uniform static interface.