The APX GCS uses a flexible plugin architecture that allows extending functionality without modifying core code. This modular approach enables developers to add new features, communication protocols, or UI components while maintaining system stability.
Handle different connection types to UAVs:
Process telemetry and sensor data:
Extend user interface capabilities:
Handle mission planning and execution:
Each plugin follows a consistent structure:
Plugins/
├── MyPlugin/
│ ├── CMakeLists.txt
│ ├── myplugin.cpp
│ ├── myplugin.h
│ ├── qml/
│ │ └── MyPlugin.qml
│ └── resources/
│ └── plugin.json
{
"name": "MyPlugin",
"version": "1.0.0",
"description": "Description of what this plugin does",
"author": "Your Name",
"license": "MIT",
"type": "communication",
"dependencies": {
"apx-gcs": ">=11.0.0"
}
}
Plugins are automatically discovered and registered at application startup:
add_subdirectory() in CMakeLists.txtPlugins must implement the ApxPlugin interface:
class ApxPlugin : public QObject
{
Q_OBJECT
public:
virtual QString name() const = 0;
virtual QString version() const = 0;
virtual bool initialize() = 0;
virtual void shutdown() = 0;
};
The system provides runtime management capabilities: