QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
MultiVehicleManager.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QObject>
4#include <QtQmlIntegration/QtQmlIntegration>
5
6class LinkInterface;
7class Vehicle;
9class QTimer;
10
11class MultiVehicleManager : public QObject
12{
13 Q_OBJECT
14 QML_ELEMENT
15 QML_UNCREATABLE("")
16 Q_MOC_INCLUDE("QmlObjectListModel.h")
17 Q_MOC_INCLUDE("LinkInterface.h")
18 Q_MOC_INCLUDE("Vehicle.h")
22 Q_PROPERTY(QmlObjectListModel *vehicles READ vehicles CONSTANT)
24 Q_PROPERTY(Vehicle *offlineEditingVehicle READ offlineEditingVehicle CONSTANT)
25
26public:
27 explicit MultiVehicleManager(QObject *parent = nullptr);
29
31
32 void init();
33 Q_INVOKABLE Vehicle *getVehicleById(int vehicleId) const;
34 Q_INVOKABLE void selectVehicle(int vehicleId);
35 Q_INVOKABLE void deselectVehicle(int vehicleId);
36 Q_INVOKABLE void deselectAllVehicles();
37 QmlObjectListModel *vehicles() const { return _vehicles; }
38 QmlObjectListModel *selectedVehicles() const { return _selectedVehicles; }
39 Vehicle *offlineEditingVehicle() const { return _offlineEditingVehicle; }
40 Vehicle *activeVehicle() const { return _activeVehicle; }
41 void setActiveVehicle(Vehicle *vehicle);
42 bool activeVehicleAvailable() const { return _activeVehicleAvailable; }
43 bool parameterReadyVehicleAvailable() const { return _parameterReadyVehicleAvailable; }
44
45signals:
46 void vehicleAdded(Vehicle *vehicle);
47 void vehicleRemoved(Vehicle *vehicle);
51
52private slots:
53 void _deleteVehiclePhase1(Vehicle *vehicle);
54 void _deleteVehiclePhase2(Vehicle *vehicle);
55 void _setActiveVehiclePhase2(Vehicle *vehicle);
56 void _vehicleParametersReadyChanged(bool parametersReady);
57 void _sendGCSHeartbeat();
58 void _vehicleHeartbeatInfo(LinkInterface *link, int vehicleId, int componentId, int vehicleFirmwareType, int vehicleType);
59
60private:
61 bool _vehicleExists(int vehicleId);
62 bool _vehicleSelected(int vehicleId);
63 void _setActiveVehicle(Vehicle *vehicle);
64 void _setActiveVehicleAvailable(bool activeVehicleAvailable);
65 void _setParameterReadyVehicleAvailable(bool parametersReady);
66
67 QTimer *_gcsHeartbeatTimer = nullptr;
68 QmlObjectListModel *_vehicles = nullptr;
69 QmlObjectListModel *_selectedVehicles = nullptr;
70 Vehicle *_offlineEditingVehicle = nullptr;
71 bool _activeVehicleAvailable = false;
72 bool _parameterReadyVehicleAvailable = false;
73 Vehicle *_activeVehicle = nullptr;
74 QList<int> _ignoreVehicleIds;
75 bool _initialized = false;
76
77 static constexpr int kGCSHeartbeatRateMSecs = 1000;
78};
The link interface defines the interface for all links used to communicate with the ground station ap...
bool activeVehicleAvailable() const
static MultiVehicleManager * instance()
void activeVehicleAvailableChanged(bool activeVehicleAvailable)
Vehicle * activeVehicle() const
Q_INVOKABLE void deselectAllVehicles()
Vehicle * offlineEditingVehicle() const
Q_INVOKABLE void selectVehicle(int vehicleId)
void vehicleAdded(Vehicle *vehicle)
Q_INVOKABLE void deselectVehicle(int vehicleId)
QmlObjectListModel * vehicles() const
QmlObjectListModel * selectedVehicles() const
void vehicleRemoved(Vehicle *vehicle)
void parameterReadyVehicleAvailableChanged(bool parameterReadyVehicleAvailable)
void activeVehicleChanged(Vehicle *activeVehicle)
bool parameterReadyVehicleAvailable() const
Q_INVOKABLE Vehicle * getVehicleById(int vehicleId) const
void setActiveVehicle(Vehicle *vehicle)