QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
Vehicle.h
Go to the documentation of this file.
1#pragma once
2
3#include <functional>
4#include <memory>
5
6#include <QtCore/QElapsedTimer>
7#include <QtCore/QFile>
8#include <QtCore/QObject>
9#include <QtCore/QPointer>
10#include <QtCore/QSharedPointer>
11#include <QtCore/QTime>
12#include <QtCore/QTimer>
13#include <QtCore/QVariantList>
14#include <QtPositioning/QGeoCoordinate>
15#include <QtQmlIntegration/QtQmlIntegration>
16
17#include <array>
18#include <atomic>
19
20#include "QGCMAVLink.h"
21#include "VehicleFactGroup.h"
22#include "VehicleSigningController.h" // Q_PROPERTY needs the full QObject type for moc/QML metatype registration
23#include "VehicleTypes.h"
24
25class Actuators;
28class QGCMapCircle;
29class QJsonDocument;
33class AutoPilotPlugin;
55class Autotune;
58class FirmwarePlugin;
59class FTPManager;
60class GeoFenceManager;
64class LinkInterface;
66class MavCommandQueue;
68class MissionManager;
73class RemoteIDManager;
74class RequestMessageTest;
75class RetryableRequestMessageStateTest;
76class SendMavCommandWithHandlerTest;
77class SendMavCommandWithSignallingTest;
78class StandardModes;
84class VehicleSupports;
85
87{
88 Q_OBJECT
89 QML_ELEMENT
90 QML_UNCREATABLE("")
91 Q_MOC_INCLUDE("Actuators.h")
92 Q_MOC_INCLUDE("AutoPilotPlugin.h")
93 Q_MOC_INCLUDE("Autotune.h")
94 Q_MOC_INCLUDE("GimbalController.h")
95 Q_MOC_INCLUDE("LinkInterface.h")
96 Q_MOC_INCLUDE("MAVLinkLogManager.h")
97 Q_MOC_INCLUDE("ParameterManager.h")
98 Q_MOC_INCLUDE("QGCMapCircle.h")
99 Q_MOC_INCLUDE("QmlObjectListModel.h")
100 Q_MOC_INCLUDE("RemoteIDManager.h")
101 Q_MOC_INCLUDE("TrajectoryPoints.h")
102 Q_MOC_INCLUDE("VehicleLinkManager.h")
103 Q_MOC_INCLUDE("VehicleObjectAvoidance.h")
104 Q_MOC_INCLUDE("VehicleSupports.h")
105
107 friend class VehicleLinkManager;
108 friend class FactGroupListModel; // Allow call _addFactGroup
109#ifdef QGC_UNITTEST_BUILD
110 friend class SendMavCommandWithSignallingTest; // Unit test
111 friend class SendMavCommandWithHandlerTest; // Unit test
112 friend class RequestMessageTest; // Unit test
113 friend class RetryableRequestMessageStateTest; // Unit test
114#endif
115 friend class GimbalController; // Allow GimbalController to call _addFactGroup
116
117public:
119 int vehicleId,
121 MAV_AUTOPILOT firmwareType,
122 MAV_TYPE vehicleType,
123 QObject* parent = nullptr);
124
125 // Pass these into the offline constructor to create an offline vehicle which tracks the offline vehicle settings.
126 // Keep these as valid enum values to avoid UBSan failures on enum loads/comparisons.
127 // Use ENUM_END sentinels — no real component should report these values.
128 static const MAV_AUTOPILOT MAV_AUTOPILOT_TRACK = MAV_AUTOPILOT_ENUM_END;
129 static const MAV_TYPE MAV_TYPE_TRACK = MAV_TYPE_ENUM_END;
130
131 // The following is used to create a disconnected Vehicle for use while offline editing.
132 Vehicle(MAV_AUTOPILOT firmwareType,
133 MAV_TYPE vehicleType,
134 QObject* parent = nullptr);
135
136 ~Vehicle();
137
143 Q_ENUM(CheckList)
144
145 Q_PROPERTY(int id READ id CONSTANT)
146 Q_PROPERTY(AutoPilotPlugin* autopilotPlugin MEMBER _autopilotPlugin CONSTANT)
147 Q_PROPERTY(QGeoCoordinate coordinate READ coordinate NOTIFY coordinateChanged)
148 Q_PROPERTY(QGeoCoordinate homePosition READ homePosition NOTIFY homePositionChanged)
149 Q_PROPERTY(QGeoCoordinate armedPosition READ armedPosition NOTIFY armedPositionChanged)
150 Q_PROPERTY(bool armed READ armed WRITE setArmedShowError NOTIFY armedChanged)
151 Q_PROPERTY(bool autoDisarm READ autoDisarm NOTIFY autoDisarmChanged)
152 Q_PROPERTY(bool flightModeSetAvailable READ flightModeSetAvailable CONSTANT)
153 Q_PROPERTY(QStringList flightModes READ flightModes NOTIFY flightModesChanged)
154 Q_PROPERTY(QString flightMode READ flightMode WRITE setFlightMode NOTIFY flightModeChanged)
155 Q_PROPERTY(TrajectoryPoints* trajectoryPoints MEMBER _trajectoryPoints CONSTANT)
157 Q_PROPERTY(float latitude READ latitude NOTIFY coordinateChanged)
158 Q_PROPERTY(float longitude READ longitude NOTIFY coordinateChanged)
159 Q_PROPERTY(bool px4Firmware READ px4Firmware NOTIFY firmwareTypeChanged)
160 Q_PROPERTY(bool apmFirmware READ apmFirmware NOTIFY firmwareTypeChanged)
161 Q_PROPERTY(bool soloFirmware READ soloFirmware WRITE setSoloFirmware NOTIFY soloFirmwareChanged)
162 Q_PROPERTY(bool genericFirmware READ genericFirmware CONSTANT)
164 Q_PROPERTY(uint messagesSent READ messagesSent NOTIFY messagesSentChanged)
165 Q_PROPERTY(uint messagesLost READ messagesLost NOTIFY messagesLostChanged)
166 Q_PROPERTY(bool airship READ airship NOTIFY vehicleTypeChanged)
167 Q_PROPERTY(bool fixedWing READ fixedWing NOTIFY vehicleTypeChanged)
168 Q_PROPERTY(bool multiRotor READ multiRotor NOTIFY vehicleTypeChanged)
169 Q_PROPERTY(bool vtol READ vtol NOTIFY vehicleTypeChanged)
170 Q_PROPERTY(bool rover READ rover NOTIFY vehicleTypeChanged)
171 Q_PROPERTY(bool sub READ sub NOTIFY vehicleTypeChanged)
172 Q_PROPERTY(VehicleSupports* supports READ supports CONSTANT)
173 Q_PROPERTY(QString prearmError READ prearmError WRITE setPrearmError NOTIFY prearmErrorChanged)
174 Q_PROPERTY(int motorCount READ motorCount CONSTANT)
175 Q_PROPERTY(bool coaxialMotors READ coaxialMotors CONSTANT)
176 Q_PROPERTY(bool xConfigMotors READ xConfigMotors CONSTANT)
177 Q_PROPERTY(bool isOfflineEditingVehicle READ isOfflineEditingVehicle CONSTANT)
182 Q_PROPERTY(QString missionFlightMode READ missionFlightMode CONSTANT)
183 Q_PROPERTY(QString pauseFlightMode READ pauseFlightMode CONSTANT)
184 Q_PROPERTY(QString rtlFlightMode READ rtlFlightMode CONSTANT)
185 Q_PROPERTY(QString smartRTLFlightMode READ smartRTLFlightMode CONSTANT)
186 Q_PROPERTY(QString landFlightMode READ landFlightMode CONSTANT)
187 Q_PROPERTY(QString takeControlFlightMode READ takeControlFlightMode CONSTANT)
188 Q_PROPERTY(QString followFlightMode READ followFlightMode CONSTANT)
189 Q_PROPERTY(QString motorDetectionFlightMode READ motorDetectionFlightMode CONSTANT)
190 Q_PROPERTY(QString stabilizedFlightMode READ stabilizedFlightMode CONSTANT)
191 Q_PROPERTY(QString firmwareTypeString READ firmwareTypeString NOTIFY firmwareTypeChanged)
192 Q_PROPERTY(QString vehicleTypeString READ vehicleTypeString NOTIFY vehicleTypeChanged)
193 Q_PROPERTY(QString vehicleImageOpaque READ vehicleImageOpaque CONSTANT)
194 Q_PROPERTY(QString vehicleImageOutline READ vehicleImageOutline CONSTANT)
195 Q_PROPERTY(QVariantList toolIndicators READ toolIndicators NOTIFY toolIndicatorsChanged)
197 Q_PROPERTY(QString hobbsMeter READ hobbsMeter NOTIFY hobbsMeterChanged)
198 Q_PROPERTY(bool inFwdFlight READ inFwdFlight NOTIFY inFwdFlightChanged)
200 Q_PROPERTY(quint64 mavlinkSentCount READ mavlinkSentCount NOTIFY mavlinkStatusChanged)
202 Q_PROPERTY(quint64 mavlinkLossCount READ mavlinkLossCount NOTIFY mavlinkStatusChanged)
204 Q_PROPERTY(GimbalController* gimbalController READ gimbalController CONSTANT)
205 Q_PROPERTY(bool hasGripper READ hasGripper NOTIFY hasGripperChanged)
206 Q_PROPERTY(bool isROIEnabled READ isROIEnabled NOTIFY isROIEnabledChanged)
209 Q_PROPERTY(bool readyToFly READ readyToFly NOTIFY readyToFlyChanged)
210 Q_PROPERTY(QObject* sysStatusSensorInfo READ sysStatusSensorInfo CONSTANT)
211 Q_PROPERTY(bool allSensorsHealthy READ allSensorsHealthy NOTIFY allSensorsHealthyChanged) //< true: all sensors in SYS_STATUS reported as healthy
212 Q_PROPERTY(bool requiresGpsFix READ requiresGpsFix NOTIFY requiresGpsFixChanged)
213 Q_PROPERTY(double loadProgress READ loadProgress NOTIFY loadProgressChanged)
215
216 // The following properties relate to Orbit status
217 Q_PROPERTY(bool orbitActive READ orbitActive NOTIFY orbitActiveChanged)
218 Q_PROPERTY(QGCMapCircle* orbitMapCircle READ orbitMapCircle CONSTANT)
219
220 // Vehicle state used for guided control
221 Q_PROPERTY(bool flying READ flying NOTIFY flyingChanged)
222 Q_PROPERTY(bool landing READ landing NOTIFY landingChanged)
223 Q_PROPERTY(bool guidedMode READ guidedMode WRITE setGuidedMode NOTIFY guidedModeChanged)
224 Q_PROPERTY(QString gotoFlightMode READ gotoFlightMode CONSTANT)
227
228 Q_PROPERTY(ParameterManager* parameterManager READ parameterManager CONSTANT)
231 Q_PROPERTY(Autotune* autotune READ autotune CONSTANT)
232 Q_PROPERTY(RemoteIDManager* remoteIDManager READ remoteIDManager CONSTANT)
233
234 // FactGroup object model properties
235
236 Q_PROPERTY(FactGroup* vehicle READ vehicleFactGroup CONSTANT)
237 Q_PROPERTY(FactGroup* gps READ gpsFactGroup CONSTANT)
238 Q_PROPERTY(FactGroup* gps2 READ gps2FactGroup CONSTANT)
239 Q_PROPERTY(FactGroup* gpsAggregate READ gpsAggregateFactGroup CONSTANT)
240 Q_PROPERTY(FactGroup* wind READ windFactGroup CONSTANT)
241 Q_PROPERTY(FactGroup* vibration READ vibrationFactGroup CONSTANT)
242 Q_PROPERTY(FactGroup* temperature READ temperatureFactGroup CONSTANT)
243 Q_PROPERTY(FactGroup* clock READ clockFactGroup CONSTANT)
244 Q_PROPERTY(FactGroup* setpoint READ setpointFactGroup CONSTANT)
245 Q_PROPERTY(FactGroup* estimatorStatus READ estimatorStatusFactGroup CONSTANT)
246 Q_PROPERTY(FactGroup* terrain READ terrainFactGroup CONSTANT)
247 Q_PROPERTY(FactGroup* distanceSensors READ distanceSensorFactGroup CONSTANT)
248 Q_PROPERTY(FactGroup* localPosition READ localPositionFactGroup CONSTANT)
249 Q_PROPERTY(FactGroup* localPositionSetpoint READ localPositionSetpointFactGroup CONSTANT)
250 Q_PROPERTY(FactGroup* hygrometer READ hygrometerFactGroup CONSTANT)
251 Q_PROPERTY(FactGroup* generator READ generatorFactGroup CONSTANT)
252 Q_PROPERTY(FactGroup* efi READ efiFactGroup CONSTANT)
253 Q_PROPERTY(FactGroup* radioStatus READ radioStatusFactGroup CONSTANT)
254 Q_PROPERTY(Actuators* actuators READ actuators CONSTANT)
255
256 // Dynamic FactGroupListModel properties
257 Q_PROPERTY(QmlObjectListModel* batteries READ batteries CONSTANT)
258 Q_PROPERTY(QmlObjectListModel* escs READ escs CONSTANT)
259
268 Q_PROPERTY(QString gitHash READ gitHash NOTIFY gitHashChanged)
269 Q_PROPERTY(quint64 vehicleUID READ vehicleUID NOTIFY vehicleUIDChanged)
270 Q_PROPERTY(QString vehicleUIDStr READ vehicleUIDStr NOTIFY vehicleUIDChanged)
271
273
274
275 Q_INVOKABLE void resetCounters ();
276
277 Q_INVOKABLE void virtualTabletJoystickValue(double roll, double pitch, double yaw, double thrust);
278
280 Q_INVOKABLE void guidedModeRTL(bool smartRTL);
281
283 Q_INVOKABLE void guidedModeLand();
284
286 Q_INVOKABLE void guidedModeTakeoff(double altitudeRelative);
287
289 Q_INVOKABLE double minimumTakeoffAltitudeMeters();
290
293
295 Q_INVOKABLE double maximumEquivalentAirspeed();
296
298 Q_INVOKABLE double minimumEquivalentAirspeed();
299
302 Q_INVOKABLE bool guidedModeGotoLocation(const QGeoCoordinate& gotoCoord, double forwardFlightLoiterRadius = 0.0f);
303
307 Q_INVOKABLE void guidedModeChangeAltitude(double altitudeChange, bool pauseVehicle);
308
311 Q_INVOKABLE void guidedModeChangeHeading(const QGeoCoordinate &headingCoord);
312
315 Q_INVOKABLE void guidedModeChangeGroundSpeedMetersSecond(double groundspeed);
318 Q_INVOKABLE void guidedModeChangeEquivalentAirspeedMetersSecond(double airspeed);
319
324 Q_INVOKABLE void guidedModeOrbit(const QGeoCoordinate& centerCoord, double radius, double amslAltitude);
325
328 Q_INVOKABLE void guidedModeROI(const QGeoCoordinate& centerCoord);
329 Q_INVOKABLE void stopGuidedModeROI();
330
333 Q_INVOKABLE void pauseVehicle();
334
336 Q_INVOKABLE void emergencyStop();
337
339 Q_INVOKABLE void abortLanding(double climbOutAltitude);
340
342 Q_INVOKABLE void landingGearDeploy();
343
345 Q_INVOKABLE void landingGearRetract();
346
347 Q_INVOKABLE void startTakeoff();
348
349 Q_INVOKABLE void startMission();
350
352 Q_INVOKABLE void setCurrentMissionSequence(int seq);
353
355 Q_INVOKABLE void rebootVehicle();
356
357 Q_INVOKABLE void sendPlan(QString planFile);
358 Q_INVOKABLE void setEstimatorOrigin(const QGeoCoordinate& centerCoord);
359
361 void setEstimatorOrigin_SET_GPS_GLOBAL_ORIGIN(const QGeoCoordinate& centerCoord);
362
364 // returns 1 if current > compare, 0 if current == compare, -1 if current < compare
365 Q_INVOKABLE int versionCompare(const QString& compare) const;
366 Q_INVOKABLE int versionCompare(int major, int minor, int patch) const;
367
372 Q_INVOKABLE void motorTest(int motor, int percent, int timeoutSecs, bool showError);
373
381
383
384 Q_INVOKABLE void forceArm ();
385
387 Q_INVOKABLE void sendParamMapRC(const QString& paramName, double scale, double centerValue, int tuningID, double minValue, double maxValue);
388
390 Q_INVOKABLE void clearAllParamMapRC(void);
391
393 Q_INVOKABLE void closeVehicle();
394
396 Q_INVOKABLE void triggerSimpleCamera(void);
397
399 Q_INVOKABLE void doSetHome(const QGeoCoordinate& coord);
400
401 Q_INVOKABLE QVariant expandedToolbarIndicatorSource(const QString& indicatorName);
402
403 bool isInitialConnectComplete() const;
404 QString gotoFlightMode () const;
405
406 VehicleSupports* supports() { return _vehicleSupports; }
407 bool hasGripper () const;
410
411 // Property accessors
412
413 QGeoCoordinate coordinate() { return _coordinate; }
414 QGeoCoordinate armedPosition () { return _armedPosition; }
415
416 qreal getInitialGCSPressure() const { return _initialGCSPressure; }
417 qreal getInitialGCSTemperature() const { return _initialGCSTemperature; }
418 void setInitialGCSPressure(qreal pressure) { _initialGCSPressure = pressure; }
419 void setInitialGCSTemperature(qreal temperature) { _initialGCSTemperature = temperature; }
420
421 void updateFlightDistance(double distance);
422
423 void sendJoystickDataThreadSafe (float roll, float pitch, float yaw, float thrust, quint16 buttons, quint16 buttons2, float pitchExtension, float rollExtension, float aux1, float aux2, float aux3, float aux4, float aux5, float aux6);
425 static constexpr int kAuxRcOverrideChannelCount = 6;
426 void sendJoystickAuxRcOverrideThreadSafe(const std::array<uint16_t, kAuxRcOverrideChannelCount> &channelValues, const std::array<bool, kAuxRcOverrideChannelCount> &channelEnabled, bool useRcOverride);
427
428 // Property accesors
429 int id() const{ return _systemID; }
430 int compId() const{ return _compID; }
431 MAV_AUTOPILOT firmwareType() const { return _firmwareType; }
432 MAV_TYPE vehicleType() const { return _vehicleType; }
434 Q_INVOKABLE QString vehicleClassInternalName() const;
435
439
443
445 AutoPilotPlugin* autopilotPlugin() { return _autopilotPlugin; }
446
448 FirmwarePlugin* firmwarePlugin() { return _firmwarePlugin; }
449
450
451 QGeoCoordinate homePosition();
452
453 bool armed () const{ return _armed; }
454 void setArmed (bool armed, bool showError);
455 void setArmedShowError (bool armed) { setArmed(armed, true); }
456
458 QStringList flightModes ();
459 QString flightMode () const;
460 void setFlightMode (const QString& flightMode);
461
462 bool airship() const;
463
464 void pairRX(int rxType, int rxSubType);
465
466 bool fixedWing() const;
467 bool multiRotor() const;
468 bool vtol() const;
469 bool rover() const;
470 bool sub() const;
471 bool spacecraft() const;
472
473
474
475 void setGuidedMode(bool guidedMode);
476
477 QString prearmError() const { return _prearmError; }
478 void setPrearmError(const QString& prearmError);
479
481
482 //-- Mavlink Logging
483 void startMavlinkLog();
484 void stopMavlinkLog();
485
490 void requestDataStream(MAV_DATA_STREAM stream, uint16_t rate, bool sendMultiple = true);
491
492 // The follow method are used to turn on/off the tracking of settings updates for firmware/vehicle type on offline vehicles.
495
496 float latitude () { return static_cast<float>(_coordinate.latitude()); }
497 float longitude () { return static_cast<float>(_coordinate.longitude()); }
498 bool px4Firmware () const { return _firmwareType == MAV_AUTOPILOT_PX4; }
499 bool apmFirmware () const { return _firmwareType == MAV_AUTOPILOT_ARDUPILOTMEGA; }
500 bool genericFirmware () const { return !px4Firmware() && !apmFirmware(); }
501 uint messagesReceived () const{ return _messagesReceived; }
502 uint messagesSent () const{ return _messagesSent; }
503 uint messagesLost () const{ return _messagesLost; }
504 bool flying () const { return _flying; }
505 bool landing () const { return _landing; }
506 bool guidedMode () const;
507 bool inFwdFlight () const;
508 bool vtolInFwdFlight () const { return _vtolInFwdFlight; }
509 uint8_t baseMode () const { return _base_mode; }
510 uint32_t customMode () const { return _custom_mode; }
513 uint32_t effectiveCustomMode () const { return _has_custom_mode_user_intention ? _custom_mode_user_intention : _custom_mode; }
514 bool isOfflineEditingVehicle () const { return _offlineEditingVehicle; }
515 int sensorsPresentBits () const { return static_cast<int>(_onboardControlSensorsPresent); }
516 int sensorsEnabledBits () const { return static_cast<int>(_onboardControlSensorsEnabled); }
517 int sensorsHealthBits () const { return static_cast<int>(_onboardControlSensorsHealth); }
518 int sensorsUnhealthyBits () const { return static_cast<int>(_onboardControlSensorsUnhealthy); }
519 QString missionFlightMode () const;
520 QString pauseFlightMode () const;
521 QString rtlFlightMode () const;
522 QString smartRTLFlightMode () const;
523 QString landFlightMode () const;
524 QString takeControlFlightMode () const;
525 QString followFlightMode () const;
526 QString motorDetectionFlightMode () const;
527 QString stabilizedFlightMode () const;
528 double defaultCruiseSpeed () const { return _defaultCruiseSpeed; }
529 double defaultHoverSpeed () const { return _defaultHoverSpeed; }
530 QString firmwareTypeString () const;
531 QString vehicleTypeString () const;
532 bool autoDisarm ();
533 bool orbitActive () const { return _orbitActive; }
534 QGCMapCircle* orbitMapCircle () { return _orbitMapCircle.get(); }
535 bool readyToFlyAvailable () const{ return _readyToFlyAvailable; }
536 bool readyToFly () const{ return _readyToFly; }
537 bool allSensorsHealthy () const{ return _allSensorsHealthy; }
538 QObject* sysStatusSensorInfo ();
539 bool requiresGpsFix () const { return static_cast<bool>(_onboardControlSensorsPresent & MAV_SYS_STATUS_SENSOR_GPS); }
540 bool hilMode () const { return _base_mode & MAV_MODE_FLAG_HIL_ENABLED; }
541 Actuators* actuators () const { return _actuators; }
542 VehicleSigningController* signingController() { return _signingController; }
543 const VehicleSigningController* signingController() const { return _signingController; }
544
546 void stopCalibration (bool showError);
547
548 void startUAVCANBusConfig(void);
549 void stopUAVCANBusConfig(void);
550
570
573
577 ParameterManager* parameterManager () { return _parameterManager; }
578 ParameterManager* parameterManager () const { return _parameterManager; }
581 ComponentInformationManager* compInfoManager () { return _componentInformationManager; }
582 VehicleObjectAvoidance* objectAvoidance () { return _objectAvoidance; }
583 Autotune* autotune () const { return _autotune; }
585
586 static void showCommandAckError(const mavlink_command_ack_t& ack);
587
594 void sendMavCommand(int compId, MAV_CMD command, bool showError, float param1 = 0.0f, float param2 = 0.0f, float param3 = 0.0f, float param4 = 0.0f, float param5 = 0.0f, float param6 = 0.0f, float param7 = 0.0f);
595 void sendMavCommandDelayed(int compId, MAV_CMD command, bool showError, int milliseconds, float param1 = 0.0f, float param2 = 0.0f, float param3 = 0.0f, float param4 = 0.0f, float param5 = 0.0f, float param6 = 0.0f, float param7 = 0.0f);
596 void sendMavCommandInt(int compId, MAV_CMD command, MAV_FRAME frame, bool showError, float param1, float param2, float param3, float param4, double param5, double param6, float param7);
597
612 bool isMavCommandPending(int targetCompId, MAV_CMD command);
613
615 Q_INVOKABLE void sendCommand(int compId, int command, bool showError, double param1 = 0.0, double param2 = 0.0, double param3 = 0.0, double param4 = 0.0, double param5 = 0.0, double param6 = 0.0, double param7 = 0.0);
616
618
619 // MavCmdProgressHandler, MavCmdResultHandler, MavCmdAckHandlerInfo_t are inherited from VehicleTypes.
620
623 const MavCmdAckHandlerInfo_t* ackHandlerInfo,
624 int compId, MAV_CMD command,
625 float param1 = 0.0f, float param2 = 0.0f, float param3 = 0.0f, float param4 = 0.0f, float param5 = 0.0f, float param6 = 0.0f, float param7 = 0.0f);
626
631 const MavCmdAckHandlerInfo_t* ackHandlerInfo,
632 int compId, MAV_CMD command, MAV_FRAME frame,
633 float param1 = 0.0f, float param2 = 0.0f, float param3 = 0.0f, float param4 = 0.0f, double param5 = 0.0f, double param6 = 0.0f, float param7 = 0.0f);
634
638 std::function<void()> lambda,
639 int compId, MAV_CMD command,
640 bool showError,
641 float param1 = 0.0f, float param2 = 0.0f, float param3 = 0.0f, float param4 = 0.0f, float param5 = 0.0f, float param6 = 0.0f, float param7 = 0.0f);
642
646 std::function<void()> lambda,
647 int compId, MAV_CMD command, MAV_FRAME frame,
648 bool showError,
649 float param1 = 0.0f, float param2 = 0.0f, float param3 = 0.0f, float param4 = 0.0f, double param5 = 0.0, double param6 = 0.0, float param7 = 0.0f);
650
651
653
654 // RequestMessageResultHandler is inherited from VehicleTypes.
655
659 void requestMessage(RequestMessageResultHandler resultHandler, void* resultHandlerData, int compId, int messageId, float param1 = 0.0f, float param2 = 0.0f, float param3 = 0.0f, float param4 = 0.0f, float param5 = 0.0f);
660
661 int firmwareMajorVersion() const { return _firmwareMajorVersion; }
662 int firmwareMinorVersion() const { return _firmwareMinorVersion; }
663 int firmwarePatchVersion() const { return _firmwarePatchVersion; }
664 int firmwareVersionType() const { return _firmwareVersionType; }
665 int firmwareCustomMajorVersion() const { return _firmwareCustomMajorVersion; }
666 int firmwareCustomMinorVersion() const { return _firmwareCustomMinorVersion; }
667 int firmwareCustomPatchVersion() const { return _firmwareCustomPatchVersion; }
668 int firmwareBoardVendorId() const { return _firmwareBoardVendorId; }
669 int firmwareBoardProductId() const { return _firmwareBoardProductId; }
670 QString firmwareVersionTypeString() const;
671 void setFirmwareVersion(int majorVersion, int minorVersion, int patchVersion, FIRMWARE_VERSION_TYPE versionType = FIRMWARE_VERSION_TYPE_OFFICIAL);
672 void setFirmwareCustomVersion(int majorVersion, int minorVersion, int patchVersion);
673 // versionNotSetValue inherited from VehicleTypes
674
675 QString gitHash() const { return _gitHash; }
676 quint64 vehicleUID() const { return _uid; }
677 QString vehicleUIDStr();
678
679 bool soloFirmware() const { return _soloFirmware; }
680 void setSoloFirmware(bool soloFirmware);
681
682 int defaultComponentId() const{ return _defaultComponentId; }
683
686
688 int motorCount();
689
691 bool coaxialMotors();
692
694 bool xConfigMotors();
695
697 class FirmwarePluginInstanceData* firmwarePluginInstanceData() { return _firmwarePluginInstanceData; }
698
702
703 QString vehicleImageOpaque () const;
704 QString vehicleImageOutline () const;
705
706 const QVariantList& toolIndicators();
707
708 bool capabilitiesKnown () const { return _capabilityBitsKnown; }
709 uint64_t capabilityBits () const { return _capabilityBits; } // Change signalled by capabilityBitsChanged
710
711 QString hobbsMeter ();
712
715 bool initialPlanRequestComplete() const { return _initialPlanRequestComplete; }
716
718
719 void _setFlying(bool flying);
720 void _setLanding(bool landing);
721 void _setHomePosition(QGeoCoordinate& homeCoord);
722
725
728
729 quint64 mavlinkSentCount () const{ return _mavlinkSentCount; }
730 quint64 mavlinkReceivedCount () const{ return _mavlinkReceivedCount; }
731 quint64 mavlinkLossCount () const{ return _mavlinkLossCount; }
732 float mavlinkLossPercent () const{ return _mavlinkLossPercent; }
733
734 bool isROIEnabled () const{ return _isROIEnabled; }
735
736 CheckList checkListState () { return _checkListState; }
737 void setCheckListState (CheckList cl) { _checkListState = cl; emit checkListStateChanged(); }
738
739 double loadProgress () const { return _loadProgress; }
740
741 void setActuatorsMetadata(uint8_t compid, const QString& metadataJsonFileName, const QJsonDocument& metadataJson);
742
743 GimbalController* gimbalController () { return _gimbalController; }
744
745public slots:
747 void _offlineFirmwareTypeSettingChanged (QVariant varFirmwareType); // Should only be used by MissionControler to set firmware from Plan file
748 void _offlineVehicleTypeSettingChanged (QVariant varVehicleType); // Should only be used by MissionController to set vehicle type from Plan file
749 Q_INVOKABLE void sendGripperAction(GRIPPER_ACTIONS gripperOption);
750
751signals:
752 void coordinateChanged (QGeoCoordinate coordinate);
754 void homePositionChanged (const QGeoCoordinate& homePosition);
756 void armedChanged (bool armed);
757 void flightModeChanged (const QString& flightMode);
763 void prearmErrorChanged (const QString& prearmError);
765 void defaultCruiseSpeedChanged (double cruiseSpeed);
766 void defaultHoverSpeedChanged (double hoverSpeed);
785 void readyToFlyChanged (bool readyToFy);
791
794 void gitHashChanged (QString hash);
796 void loadProgressChanged (float value);
797
800 void rcChannelsRawChanged(QVector<int> channelValues);
801
804 void rcChannelsClampedChanged(QVector<int> channelValues);
805
808 void servoOutputsChanged(QVector<int> servoValues);
809
810 // Mavlink Log Download
811 void mavlinkLogData (Vehicle* vehicle, uint8_t target_system, uint8_t target_component, uint16_t sequence, uint8_t first_message, QByteArray data, bool acked);
812
819 void mavCommandResult (int vehicleId, int targetComponent, int command, int ackResult, int failureCode);
820
821 // MAVlink Serial Data
822 void mavlinkSerialControl (uint8_t device, uint8_t flags, uint16_t timeout, uint32_t baudrate, QByteArray data);
823
825
827 void roiCoordChanged (const QGeoCoordinate& centerCoord);
829
830 void sensorsParametersResetAck (bool success);
831
832 void logEntry (uint32_t time_utc, uint32_t size, uint16_t id, uint16_t num_logs, uint16_t last_log_num);
833 void logData (uint32_t ofs, uint16_t id, uint8_t count, const uint8_t* data);
834
835private slots:
836 void _mavlinkMessageReceived (LinkInterface* link, mavlink_message_t message);
837 void _sendMessageMultipleNext ();
838 void _parametersReady (bool parametersReady);
839 void _handleFlightModeChanged (const QString& flightMode);
840 void _announceArmedChanged (bool armed);
841 void _offlineCruiseSpeedSettingChanged (QVariant value);
842 void _offlineHoverSpeedSettingChanged (QVariant value);
843 void _prearmErrorTimeout ();
844 void _firstMissionLoadComplete ();
845 void _firstGeoFenceLoadComplete ();
846 void _firstRallyPointLoadComplete ();
847 void _clearCameraTriggerPoints ();
848 void _updateDistanceHeadingHome ();
849 void _updateMissionItemIndex ();
850 void _updateHeadingToNextWP ();
851 void _updateDistanceHeadingGCS ();
852 void _updateHomepoint ();
853 void _updateHobbsMeter ();
854 void _vehicleParamLoaded (bool ready);
855 void _sendQGCTimeToVehicle ();
856 void _mavlinkMessageStatus (int uasId, uint64_t totalSent, uint64_t totalReceived, uint64_t totalLoss, float lossPercent);
857 void _orbitTelemetryTimeout ();
858 void _updateFlightTime ();
859 void _gotProgressUpdate (float progressValue);
860
861private:
862 void _activeVehicleChanged (Vehicle* newActiveVehicle);
863 void _handlePing (LinkInterface* link, mavlink_message_t& message);
864 void _handleHomePosition (mavlink_message_t& message);
865 void _handleHeartbeat (mavlink_message_t& message);
866 void _handleCurrentMode (mavlink_message_t& message);
867 void _handleRCChannels (mavlink_message_t& message);
868 void _handleBatteryStatus (mavlink_message_t& message);
869 void _handleSysStatus (mavlink_message_t& message);
870 void _handleExtendedSysState (mavlink_message_t& message);
871 void _handleCommandAck (mavlink_message_t& message);
872 void _handleGpsRawInt (mavlink_message_t& message);
873 void _handleGlobalPositionInt (mavlink_message_t& message);
874 void _handleHighLatency (mavlink_message_t& message);
875 void _handleHighLatency2 (mavlink_message_t& message);
876 void _handleOrbitExecutionStatus (const mavlink_message_t& message);
877 void _handleGimbalOrientation (const mavlink_message_t& message);
878 void _handleObstacleDistance (const mavlink_message_t& message);
879 void _handleFenceStatus (const mavlink_message_t& message);
880
881 // ArduPilot dialect messages
882#if !defined(QGC_NO_ARDUPILOT_DIALECT)
883 void _handleCameraFeedback (const mavlink_message_t& message);
884#endif
885 void _handleCameraImageCaptured (const mavlink_message_t& message);
886 void _handleCommandLong (const mavlink_message_t& message);
887 void _missionManagerError (int errorCode, const QString& errorMsg);
888 void _geoFenceManagerError (int errorCode, const QString& errorMsg);
889 void _rallyPointManagerError (int errorCode, const QString& errorMsg);
890 void _say (const QString& text);
891 QString _vehicleIdSpeech ();
892 void _handleMavlinkLoggingData (mavlink_message_t& message);
893 void _handleMavlinkLoggingDataAcked (mavlink_message_t& message);
894 void _ackMavlinkLogData (uint16_t sequence);
895 void _commonInit (LinkInterface* link);
896 void _setupAutoDisarmSignalling ();
897 void _setCapabilities (uint64_t capabilityBits);
898 void _updateArmed (bool armed);
899 bool _apmArmingNotRequired ();
900 void _initializeCsv ();
901 void _writeCsvLine ();
902 void _flightTimerStart ();
903 void _flightTimerStop ();
904 void _setMessageInterval (int messageId, int rate);
905 bool setFlightModeCustom (const QString& flightMode, uint8_t* base_mode, uint32_t* custom_mode);
906 QString _formatMavCommand (MAV_CMD command, float param1);
907
908 static void _rebootCommandResultHandler(void* resultHandlerData, int compId, const mavlink_command_ack_t& ack, MavCmdResultFailureCode_t failureCode);
909
910 // The following methods should only be called by unit tests
911 void _deleteGimbalController();
912 void _deleteCameraManager();
913
916 void _stopCommandProcessing();
917
918 int _systemID;
919 int _defaultComponentId;
920 bool _offlineEditingVehicle = false;
921
922 MAV_AUTOPILOT _firmwareType;
923 MAV_TYPE _vehicleType;
924 FirmwarePlugin* _firmwarePlugin = nullptr;
925 class FirmwarePluginInstanceData* _firmwarePluginInstanceData = nullptr;
926 AutoPilotPlugin* _autopilotPlugin = nullptr;
927 bool _soloFirmware = false;
928
929 QTimer _csvLogTimer;
930 QFile _csvLogFile;
931
932 bool _isActiveVehicle = false;
933
934 QGeoCoordinate _coordinate;
935 QGeoCoordinate _homePosition;
936 QGeoCoordinate _armedPosition;
937
938 qreal _initialGCSPressure = 0.;
939 qreal _initialGCSTemperature = 0.;
940
941 bool _flying = false;
942 bool _landing = false;
943 bool _vtolInFwdFlight = false;
944 uint32_t _onboardControlSensorsPresent = 0;
945 uint32_t _onboardControlSensorsEnabled = 0;
946 uint32_t _onboardControlSensorsHealth = 0;
947 uint32_t _onboardControlSensorsUnhealthy = 0;
948 bool _gpsRawIntMessageAvailable = false;
949 bool _gps2RawMessageAvailable = false;
950 bool _globalPositionIntMessageAvailable = false;
951 bool _cameraImageCapturedMessageAvailable = false;
952 double _defaultCruiseSpeed = qQNaN();
953 double _defaultHoverSpeed = qQNaN();
954 bool _capabilityBitsKnown = false;
955 uint64_t _capabilityBits = 0;
956 CheckList _checkListState = CheckListNotSetup;
957 bool _readyToFlyAvailable = false;
958 bool _readyToFly = false;
959 bool _allSensorsHealthy = true;
960 VehicleSigningController* _signingController = nullptr;
961 std::atomic<bool> _joystickAuxRcOverrideActive = false;
962
963 std::unique_ptr<SysStatusSensorInfo> _sysStatusSensorInfo;
964
965
966 QString _prearmError;
967 QTimer _prearmErrorTimer;
968 static const int _prearmErrorTimeoutMSecs = 35 * 1000;
969
970 bool _initialPlanRequestComplete = false;
971
972 ParameterManager* _parameterManager = nullptr;
973 ComponentInformationManager* _componentInformationManager = nullptr;
974 VehicleObjectAvoidance* _objectAvoidance = nullptr;
975 Autotune* _autotune = nullptr;
976 GimbalController* _gimbalController = nullptr;
977 VehicleSupports* _vehicleSupports = nullptr;
978
979 bool _armed = false;
980 uint8_t _base_mode = 0;
981 uint32_t _custom_mode = 0;
982 uint32_t _custom_mode_user_intention = 0;
983 bool _has_custom_mode_user_intention = false;
984 QString _lastAnnouncedFlightMode;
985
987 typedef struct {
988 mavlink_message_t message;
989 int retryCount;
990 } SendMessageMultipleInfo_t;
991
992 QList<SendMessageMultipleInfo_t> _sendMessageMultipleList;
993
994 static const int _sendMessageMultipleRetries = 5;
995 static const int _sendMessageMultipleIntraMessageDelay = 500;
996
997 QTimer _sendMultipleTimer;
998 int _nextSendMessageMultipleIndex = 0;
999
1000 QElapsedTimer _flightTimer;
1001 QTimer _flightTimeUpdater;
1002 TrajectoryPoints* _trajectoryPoints = nullptr;
1003 std::unique_ptr<QmlObjectListModel> _cameraTriggerPoints;
1004 //QMap<QString, ADSBVehicle*> _trafficVehicleMap;
1005
1006 bool _allLinksRemovedSent = false;
1007
1008 uint _messagesReceived = 0;
1009 uint _messagesSent = 0;
1010 uint _messagesLost = 0;
1011 uint8_t _messageSeq = 0;
1012 uint8_t _compID = 0;
1013 bool _heardFrom = false;
1014
1015 bool _isROIEnabled = false;
1016\
1017 bool _checkLatestStableFWDone = false;
1018 int _firmwareMajorVersion = versionNotSetValue;
1019 int _firmwareMinorVersion = versionNotSetValue;
1020 int _firmwarePatchVersion = versionNotSetValue;
1021 int _firmwareCustomMajorVersion = versionNotSetValue;
1022 int _firmwareCustomMinorVersion = versionNotSetValue;
1023 int _firmwareCustomPatchVersion = versionNotSetValue;
1024 FIRMWARE_VERSION_TYPE _firmwareVersionType = FIRMWARE_VERSION_TYPE_OFFICIAL;
1025
1026 // Vendor and Product as reported from the first autopilot version message
1027 // during the initial connect. They may be zero eg ArduPilot SITL reports 0
1028 // by default.
1029 uint16_t _firmwareBoardVendorId = 0;
1030 uint16_t _firmwareBoardProductId = 0;
1031
1032
1033 QString _gitHash;
1034 quint64 _uid = 0;
1035
1036 uint64_t _mavlinkSentCount = 0;
1037 uint64_t _mavlinkReceivedCount = 0;
1038 uint64_t _mavlinkLossCount = 0;
1039 float _mavlinkLossPercent = 0.0f;
1040
1041 float _loadProgress = 0.0f;
1042
1043 QMap<QString, QTime> _noisySpokenPrearmMap;
1044
1045 // Orbit status values
1046 bool _orbitActive = false;
1047 std::unique_ptr<QGCMapCircle> _orbitMapCircle;
1048 QTimer _orbitTelemetryTimer;
1049 static const int _orbitTelemetryTimeoutMsecs = 3000; // No telemetry for this amount and orbit will go inactive
1050
1051 std::unique_ptr<MAVLinkStreamConfig> _mavlinkStreamConfig;
1052
1053 MavCommandQueue* _mavCmdQueue = nullptr;
1054 RequestMessageCoordinator* _reqMsgCoord = nullptr;
1055
1056public:
1059 static constexpr int _mavCommandMaxRetryCount = 3;
1060 static constexpr int kTestMavCommandAckTimeoutMs = 500;
1062
1064 int _findMavCommandListEntryIndex(int targetCompId, MAV_CMD command);
1065
1066 QMap<uint8_t /* batteryId */, uint8_t /* MAV_BATTERY_CHARGE_STATE_OK */> _lowestBatteryChargeStateAnnouncedMap;
1067
1068 float _altitudeTuningOffset = qQNaN(); // altitude offset, so the plotted value is around 0
1069
1070 // these flags are used to determine if the speed change action from fly view should be shown
1073
1074 // FactGroup facts
1075
1076 const QString _vehicleFactGroupName = QStringLiteral("vehicle");
1077 const QString _gpsFactGroupName = QStringLiteral("gps");
1078 const QString _gps2FactGroupName = QStringLiteral("gps2");
1079 const QString _gpsAggregateFactGroupName = QStringLiteral("gpsAggregate");
1080 const QString _windFactGroupName = QStringLiteral("wind");
1081 const QString _vibrationFactGroupName = QStringLiteral("vibration");
1082 const QString _temperatureFactGroupName = QStringLiteral("temperature");
1083 const QString _clockFactGroupName = QStringLiteral("clock");
1084 const QString _setpointFactGroupName = QStringLiteral("setpoint");
1085 const QString _distanceSensorFactGroupName = QStringLiteral("distanceSensor");
1086 const QString _localPositionFactGroupName = QStringLiteral("localPosition");
1087 const QString _localPositionSetpointFactGroupName = QStringLiteral("localPositionSetpoint");
1088 const QString _estimatorStatusFactGroupName = QStringLiteral("estimatorStatus");
1089 const QString _terrainFactGroupName = QStringLiteral("terrain");
1090 const QString _hygrometerFactGroupName = QStringLiteral("hygrometer");
1091 const QString _generatorFactGroupName = QStringLiteral("generator");
1092 const QString _efiFactGroupName = QStringLiteral("efi");
1093 const QString _rpmFactGroupName = QStringLiteral("rpm");
1094 const QString _radioStatusFactGroupName = QStringLiteral("radioStatus");
1095
1115
1116 // Live SERVO_OUTPUT_RAW values (microseconds). Indexed 0..15 -> SERVO1..SERVO16.
1117 QVector<int> _servoOutputRawValues = QVector<int>(16, -1);
1118
1119 // Dynamic FactGroups
1122
1124
1134
1135 // All terrain query workflows (doSetHome, ROI, altAboveTerrain) live in the coordinator.
1137
1138public:
1139 int32_t getMessageRate(uint8_t compId, uint16_t msgId);
1140 void setMessageRate(uint8_t compId, uint16_t msgId, int32_t rate);
1141
1142signals:
1143 // Re-emitted from MessageIntervalManager so existing consumers keep working.
1144 void mavlinkMsgIntervalsChanged(uint8_t compid, uint16_t msgId, int32_t rate);
1145
1146private:
1147 MessageIntervalManager* _messageIntervalManager = nullptr;
1148
1149/*---------------------------------------------------------------------------*/
1150/*===========================================================================*/
1151/* ardupilotmega Dialect */
1152/*===========================================================================*/
1153public:
1154 Q_INVOKABLE void flashBootloader();
1155
1157 Q_INVOKABLE void motorInterlock(bool enable);
1158
1159/*---------------------------------------------------------------------------*/
1160/*===========================================================================*/
1161/* CONTROL STATUS HANDLER */
1162/*===========================================================================*/
1163public:
1164 Q_INVOKABLE void startTimerRevertAllowTakeover();
1165 Q_INVOKABLE void requestOperatorControl(bool allowOverride, int requestTimeoutSecs = 0);
1166
1167private:
1168 void _handleControlStatus(const mavlink_message_t& message);
1169 void _handleCommandRequestOperatorControl(const mavlink_command_long_t commandLong);
1170 static void _requestOperatorControlAckHandler(void* resultHandlerData, int compId, const mavlink_command_ack_t& ack, MavCmdResultFailureCode_t failureCode);
1171
1172 Q_PROPERTY(uint8_t gcsMain READ gcsMain NOTIFY gcsControlStatusChanged)
1173 Q_PROPERTY(bool gcsControlStatusFlags_SystemManager READ gcsControlStatusFlags_SystemManager NOTIFY gcsControlStatusChanged)
1174 Q_PROPERTY(bool gcsControlStatusFlags_TakeoverAllowed READ gcsControlStatusFlags_TakeoverAllowed NOTIFY gcsControlStatusChanged)
1175 Q_PROPERTY(bool firstControlStatusReceived READ firstControlStatusReceived NOTIFY gcsControlStatusChanged)
1176 Q_PROPERTY(int operatorControlTakeoverTimeoutMsecs READ operatorControlTakeoverTimeoutMsecs CONSTANT)
1177 Q_PROPERTY(int requestOperatorControlRemainingMsecs READ requestOperatorControlRemainingMsecs CONSTANT)
1178 Q_PROPERTY(bool sendControlRequestAllowed READ sendControlRequestAllowed NOTIFY sendControlRequestAllowedChanged)
1179
1180 uint8_t gcsMain() const { return _gcsMain; }
1181 bool gcsControlStatusFlags_SystemManager() const { return _gcsControlStatusFlags_SystemManager; }
1182 bool gcsControlStatusFlags_TakeoverAllowed() const { return _gcsControlStatusFlags_TakeoverAllowed; }
1183 bool firstControlStatusReceived() const { return _firstControlStatusReceived; }
1184 int operatorControlTakeoverTimeoutMsecs() const;
1185 int requestOperatorControlRemainingMsecs() const { return _timerRequestOperatorControl.remainingTime(); }
1186 bool sendControlRequestAllowed() const { return _sendControlRequestAllowed; }
1187 void requestOperatorControlStartTimer(int requestTimeoutMsecs);
1188
1189 uint8_t _gcsMain = 0;
1190 uint8_t _gcsControlStatusFlags = 0;
1191 bool _gcsControlStatusFlags_SystemManager = 0;
1192 bool _gcsControlStatusFlags_TakeoverAllowed = 0;
1193 bool _firstControlStatusReceived = false;
1194 QTimer _timerRevertAllowTakeover;
1195 QTimer _timerRequestOperatorControl;
1196 bool _sendControlRequestAllowed = true;
1197
1198signals:
1200 void requestOperatorControlReceived(int sysIdRequestingControl, int allowTakeover, int requestTimeoutSecs);
1201 void sendControlRequestAllowedChanged(bool sendControlRequestAllowed);
1202
1203/*===========================================================================*/
1204/* STATUS TEXT HANDLER */
1205/*===========================================================================*/
1206private:
1207 Q_PROPERTY(bool messageTypeNone READ messageTypeNone NOTIFY messageTypeChanged)
1208 Q_PROPERTY(bool messageTypeNormal READ messageTypeNormal NOTIFY messageTypeChanged)
1209 Q_PROPERTY(bool messageTypeWarning READ messageTypeWarning NOTIFY messageTypeChanged)
1210 Q_PROPERTY(bool messageTypeError READ messageTypeError NOTIFY messageTypeChanged)
1211 Q_PROPERTY(int messageCount READ messageCount NOTIFY messageCountChanged)
1212 Q_PROPERTY(QString formattedMessages READ formattedMessages NOTIFY formattedMessagesChanged)
1213
1214 // Q_PROPERTY(StatusTextHandler *statusTextHandler READ statusTextHandler NOTIFY statusTextHandlerChanged)
1215
1216public:
1217 Q_INVOKABLE void resetAllMessages();
1218 Q_INVOKABLE void resetErrorLevelMessages();
1219 Q_INVOKABLE void clearMessages();
1220
1221 bool messageTypeNone() const;
1222 bool messageTypeNormal() const;
1223 bool messageTypeWarning() const;
1224 bool messageTypeError() const;
1225 int messageCount() const;
1226 QString formattedMessages() const;
1227
1228 // StatusTextHandler* statusTextHandler() { return m_statusTextHandler; }
1229
1230signals:
1231 void textMessageReceived(int sysid, int componentid, int severity, QString text, QString description);
1232
1239 void newFormattedMessage(QString formattedMessage);
1240
1241 // void statusTextHandlerChanged();
1242
1243private slots:
1244 void _onStatusTextFromEvent(uint8_t compid, int severity, const QString &text, const QString &description);
1245 void _textMessageReceived(MAV_COMPONENT componentid, MAV_SEVERITY severity, QString text, QString description);
1246 void _errorMessageReceived(QString message);
1247
1248private:
1249 void _createStatusTextHandler();
1250
1251 StatusTextHandler *m_statusTextHandler = nullptr;
1252
1253/*---------------------------------------------------------------------------*/
1254/*===========================================================================*/
1255/* Image Protocol Manager */
1256/*===========================================================================*/
1257private:
1258 Q_PROPERTY(uint flowImageIndex READ flowImageIndex NOTIFY flowImageIndexChanged)
1259
1260public:
1261 uint32_t flowImageIndex() const;
1262
1263signals:
1265
1266private:
1267 void _createImageProtocolManager();
1268 void _createSigningController();
1269
1270 ImageProtocolManager *_imageProtocolManager = nullptr;
1271
1272/*---------------------------------------------------------------------------*/
1273/*===========================================================================*/
1274/* MAVLink Log Manager */
1275/*===========================================================================*/
1276private:
1278
1279public:
1281
1282signals:
1284
1285private:
1286 void _createMAVLinkLogManager();
1287
1288 MAVLinkLogManager *_mavlinkLogManager = nullptr;
1289
1290/*---------------------------------------------------------------------------*/
1291/*===========================================================================*/
1292/* Camera Manager */
1293/*===========================================================================*/
1294private:
1295 Q_MOC_INCLUDE("QGCCameraManager.h")
1297 Q_PROPERTY(QVariantList staticCameraList READ staticCameraList CONSTANT)
1298
1299public:
1300 QGCCameraManager *cameraManager() { return _cameraManager; }
1301 const QVariantList &staticCameraList() const;
1302
1303signals:
1305
1306private:
1307 void _createCameraManager();
1308
1309 QGCCameraManager *_cameraManager = nullptr;
1310
1311/*---------------------------------------------------------------------------*/
1312/*===========================================================================*/
1313/* MAVLinkEventsManager */
1314/*===========================================================================*/
1315private:
1316 Q_MOC_INCLUDE("HealthAndArmingCheckReport.h")
1318
1319public:
1321
1322 void setEventsMetadata(uint8_t compid, const QString& metadataJsonFileName);
1323
1324private:
1325 void _createMAVLinkEventManager();
1326 void _handleEventMessage(const mavlink_message_t& msg);
1327 bool _healthAndArmingChecksSupported(uint8_t compid);
1328
1329 std::unique_ptr<MAVLinkEventManager> _eventManager;
1330};
struct __mavlink_message mavlink_message_t
struct __mavlink_command_ack_t mavlink_command_ack_t
struct __mavlink_command_long_t mavlink_command_long_t
The AutoPilotPlugin class is an abstract base class which represents the methods and objects which ar...
Dynamically manages FactGroupWithIds based on incoming messages.
Used to group Facts together into an object hierarachy.
Definition FactGroup.h:16
The FirmwarePlugin class represents the methods and objects which are specific to a certain Firmware ...
This is the base class for firmware specific geofence managers.
Supports the Mavlink image transmission protocol (https://mavlink.io/en/services/image_transmission....
State machine for initial vehicle connection sequence.
The link interface defines the interface for all links used to communicate with the ground station ap...
Owns per-component EventHandler instances and drives the Health & Arming Check report.
Allows to configure a set of mavlink streams to a specific rate, and restore back to default.
Owns the COMMAND_LONG / COMMAND_INT send/retry/ack pipeline for a single Vehicle.
Tracks per-component MAVLink message intervals and mediates SET_MESSAGE_INTERVAL commands plus MESSAG...
Camera Manager.
The QGCMapCircle represents a circular area which can be displayed on a Map control.
Radio link telemetry decoded from MAVLINK_MSG_ID_RADIO_STATUS.
This is the base class for firmware specific rally point managers. A rally point manager is responsib...
Coordinates MAV_CMD_REQUEST_MESSAGE workflows: per-component queueing, ack/message correlation,...
Class which represents sensor info from the SYS_STATUS mavlink message.
NOTE: TerrainAtCoordinateQuery is not thread safe. All instances/calls to ElevationProvider must be o...
Coordinates the three terrain-query workflows attached to a Vehicle:
Per-vehicle signing facade. Owns the wiring between Vehicle and the active SigningController (which l...
Q_INVOKABLE void triggerSimpleCamera(void)
Trigger camera using MAV_CMD_DO_DIGICAM_CONTROL command.
Definition Vehicle.cc:3131
bool sub() const
Definition Vehicle.cc:1746
bool readyToFly() const
Definition Vehicle.h:536
bool isInitialConnectComplete() const
Definition Vehicle.cc:2807
Q_INVOKABLE void guidedModeChangeAltitude(double altitudeChange, bool pauseVehicle)
Definition Vehicle.cc:1912
void _setLanding(bool landing)
Definition Vehicle.cc:1813
void autoDisarmChanged()
QGCCameraManager * cameraManager()
Definition Vehicle.h:1300
bool px4Firmware() const
Definition Vehicle.h:498
Q_INVOKABLE void motorInterlock(bool enable)
Command vehicle to Enable/Disable Motor Interlock.
Definition Vehicle.cc:3392
Q_INVOKABLE void virtualTabletJoystickValue(double roll, double pitch, double yaw, double thrust)
Definition Vehicle.cc:1710
int32_t getMessageRate(uint8_t compId, uint16_t msgId)
Definition Vehicle.cc:3351
VehicleDistanceSensorFactGroup * _distanceSensorFactGroup
Definition Vehicle.h:1105
TerrainProtocolHandler * _terrainProtocolHandler
Definition Vehicle.h:1123
void firmwareTypeChanged()
bool hilMode() const
Definition Vehicle.h:540
QGCMAVLink::VehicleClass_t vehicleClass(void) const
Definition Vehicle.h:433
uint32_t effectiveCustomMode() const
Definition Vehicle.h:513
void setInitialGCSPressure(qreal pressure)
Definition Vehicle.h:418
Q_INVOKABLE void flashBootloader()
Definition Vehicle.cc:3380
uint messagesReceived() const
Definition Vehicle.h:501
void sensorsPresentBitsChanged(int sensorsPresentBits)
void defaultHoverSpeedChanged(double hoverSpeed)
const QString _vibrationFactGroupName
Definition Vehicle.h:1081
bool _multirotor_speed_limits_available
Definition Vehicle.h:1071
void gcsControlStatusChanged()
void defaultCruiseSpeedChanged(double cruiseSpeed)
bool messageTypeError() const
Definition Vehicle.cc:3415
const QString _gpsFactGroupName
Definition Vehicle.h:1077
FactGroup * localPositionFactGroup()
Definition Vehicle.cc:420
void setActuatorsMetadata(uint8_t compid, const QString &metadataJsonFileName, const QJsonDocument &metadataJson)
Definition Vehicle.cc:1265
void haveMRSpeedLimChanged()
FactGroup * vibrationFactGroup()
Definition Vehicle.cc:415
void sendMavCommandWithLambdaFallback(std::function< void()> lambda, int compId, MAV_CMD command, bool showError, float param1=0.0f, float param2=0.0f, float param3=0.0f, float param4=0.0f, float param5=0.0f, float param6=0.0f, float param7=0.0f)
Definition Vehicle.cc:2183
BatteryFactGroupListModel * _batteryFactGroupListModel
Definition Vehicle.h:1120
void sendMavCommand(int compId, MAV_CMD command, bool showError, float param1=0.0f, float param2=0.0f, float param3=0.0f, float param4=0.0f, float param5=0.0f, float param6=0.0f, float param7=0.0f)
Definition Vehicle.cc:2144
VehicleLocalPositionFactGroup * _localPositionFactGroup
Definition Vehicle.h:1106
const QString _hygrometerFactGroupName
Definition Vehicle.h:1090
void messagesLostChanged()
Q_INVOKABLE void rebootVehicle()
Reboot vehicle.
Definition Vehicle.cc:2319
FactGroup * gpsAggregateFactGroup()
Definition Vehicle.cc:413
VehicleRPMFactGroup * _rpmFactGroup
Definition Vehicle.h:1112
const QString _localPositionFactGroupName
Definition Vehicle.h:1086
void vtolInFwdFlightChanged(bool vtolInFwdFlight)
qreal getInitialGCSPressure() const
Definition Vehicle.h:416
QString missionFlightMode() const
Definition Vehicle.cc:2536
void readyToFlyAvailableChanged(bool readyToFlyAvailable)
void forceInitialPlanRequestComplete()
Definition Vehicle.cc:2710
void isROIEnabledChanged()
Actuators * actuators() const
Definition Vehicle.h:541
Q_INVOKABLE void guidedModeOrbit(const QGeoCoordinate &centerCoord, double radius, double amslAltitude)
Definition Vehicle.cc:1941
const QString _terrainFactGroupName
Definition Vehicle.h:1089
Actuators * _actuators
Definition Vehicle.h:1131
Autotune * autotune() const
Definition Vehicle.h:583
const QString _temperatureFactGroupName
Definition Vehicle.h:1082
void deleteGimbalController()
Delete gimbal controller, handy for RequestMessageTest.cc, otherwise gimbal controller message reques...
void _offlineVehicleTypeSettingChanged(QVariant varVehicleType)
Definition Vehicle.cc:487
Q_INVOKABLE void guidedModeTakeoff(double altitudeRelative)
Command vehicle to takeoff from current location.
Definition Vehicle.cc:1844
Q_INVOKABLE void sendGripperAction(GRIPPER_ACTIONS gripperOption)
Definition Vehicle.cc:3140
bool haveMRSpeedLimits() const
Definition Vehicle.h:408
QString flightMode() const
Definition Vehicle.cc:1466
bool orbitActive() const
Definition Vehicle.h:533
static QString mavCmdResultFailureCodeToString(MavCmdResultFailureCode_t failureCode)
Definition Vehicle.cc:3371
QString stabilizedFlightMode() const
Definition Vehicle.cc:2576
int firmwareCustomMajorVersion() const
Definition Vehicle.h:665
const QVariantList & staticCameraList() const
Definition Vehicle.cc:3545
void requestOperatorControlReceived(int sysIdRequestingControl, int allowTakeover, int requestTimeoutSecs)
Q_INVOKABLE QVariant expandedToolbarIndicatorSource(const QString &indicatorName)
Definition Vehicle.cc:3361
uint messagesLost() const
Definition Vehicle.h:503
void sendJoystickAuxRcOverrideThreadSafe(const std::array< uint16_t, kAuxRcOverrideChannelCount > &channelValues, const std::array< bool, kAuxRcOverrideChannelCount > &channelEnabled, bool useRcOverride)
Definition Vehicle.cc:3044
bool vtol() const
Definition Vehicle.cc:1761
void setSoloFirmware(bool soloFirmware)
Definition Vehicle.cc:2438
void mavlinkLogManagerChanged()
void requestDataStream(MAV_DATA_STREAM stream, uint16_t rate, bool sendMultiple=true)
Definition Vehicle.cc:1527
FactGroup * rpmFactGroup()
Definition Vehicle.cc:427
QGeoCoordinate homePosition()
Definition Vehicle.cc:1432
const QString _estimatorStatusFactGroupName
Definition Vehicle.h:1088
const QString _radioStatusFactGroupName
Definition Vehicle.h:1094
QString vehicleImageOutline() const
Definition Vehicle.cc:2589
MissionManager * _missionManager
Definition Vehicle.h:1125
void initialConnectComplete()
VehicleLocalPositionSetpointFactGroup * _localPositionSetpointFactGroup
Definition Vehicle.h:1107
void textMessageReceived(int sysid, int componentid, int severity, QString text, QString description)
void initialPlanRequestCompleteChanged(bool initialPlanRequestComplete)
Q_INVOKABLE double minimumEquivalentAirspeed()
Definition Vehicle.cc:1870
const QString _clockFactGroupName
Definition Vehicle.h:1083
bool rover() const
Definition Vehicle.cc:1741
bool multiRotor() const
Definition Vehicle.cc:1756
bool flying() const
Definition Vehicle.h:504
Q_INVOKABLE void stopGuidedModeROI()
Definition Vehicle.cc:2001
void firmwareCustomVersionChanged()
QString pauseFlightMode() const
Definition Vehicle.cc:2541
QString prearmError() const
Definition Vehicle.h:477
int sensorsEnabledBits() const
Definition Vehicle.h:516
EscStatusFactGroupListModel * _escStatusFactGroupListModel
Definition Vehicle.h:1121
Q_INVOKABLE void guidedModeROI(const QGeoCoordinate &centerCoord)
Definition Vehicle.cc:1973
float latitude()
Definition Vehicle.h:496
const QString _efiFactGroupName
Definition Vehicle.h:1092
void inFwdFlightChanged()
void flyingChanged(bool flying)
void setFirmwarePluginInstanceData(FirmwarePluginInstanceData *firmwarePluginInstanceData)
Definition Vehicle.cc:2530
Q_INVOKABLE double maximumHorizontalSpeedMultirotorMetersSecond()
Definition Vehicle.cc:1858
bool hasGripper() const
Definition Vehicle.cc:1875
void sendMessageMultiple(mavlink_message_t message)
Definition Vehicle.cc:1585
void capabilityBitsChanged(uint64_t capabilityBits)
bool messageTypeNone() const
Definition Vehicle.cc:3412
bool haveFWSpeedLimits() const
Definition Vehicle.h:409
int sensorsUnhealthyBits() const
Definition Vehicle.h:518
void _setHomePosition(QGeoCoordinate &homeCoord)
Definition Vehicle.cc:1188
void hobbsMeterChanged()
VehicleClockFactGroup * _clockFactGroup
Definition Vehicle.h:1103
uint64_t capabilityBits() const
Definition Vehicle.h:709
Q_INVOKABLE void abortLanding(double climbOutAltitude)
Command vehicle to abort landing.
Definition Vehicle.cc:2054
void setGuidedMode(bool guidedMode)
Definition Vehicle.cc:2068
void readyToFlyChanged(bool readyToFy)
QString firmwareVersionTypeString() const
Definition Vehicle.cc:2292
QString landFlightMode() const
Definition Vehicle.cc:2556
static void showCommandAckError(const mavlink_command_ack_t &ack)
Definition Vehicle.cc:2203
void formattedMessagesChanged()
void newFormattedMessage(QString formattedMessage)
MAV_TYPE vehicleType() const
Definition Vehicle.h:432
VehicleLinkManager * vehicleLinkManager()
Definition Vehicle.h:579
uint32_t customMode() const
Definition Vehicle.h:510
void cameraManagerChanged()
VehicleSigningController * signingController()
Definition Vehicle.h:542
Q_INVOKABLE void sendParamMapRC(const QString &paramName, double scale, double centerValue, int tuningID, double minValue, double maxValue)
Sends PARAM_MAP_RC message to vehicle.
Definition Vehicle.cc:2924
HealthAndArmingCheckReport * healthAndArmingCheckReport()
Definition Vehicle.cc:3577
void armedChanged(bool armed)
void firmwareVersionChanged()
FactGroup * distanceSensorFactGroup()
Definition Vehicle.cc:419
void logEntry(uint32_t time_utc, uint32_t size, uint16_t id, uint16_t num_logs, uint16_t last_log_num)
CheckList checkListState()
Definition Vehicle.h:736
void sendControlRequestAllowedChanged(bool sendControlRequestAllowed)
void hasGripperChanged()
FactGroup * generatorFactGroup()
Definition Vehicle.cc:425
void rcChannelsRawChanged(QVector< int > channelValues)
FirmwarePlugin * firmwarePlugin()
Provides access to the Firmware Plugin for this Vehicle.
Definition Vehicle.h:448
quint64 mavlinkSentCount() const
Definition Vehicle.h:729
void sendMavCommandInt(int compId, MAV_CMD command, MAV_FRAME frame, bool showError, float param1, float param2, float param3, float param4, double param5, double param6, float param7)
Definition Vehicle.cc:2173
Q_INVOKABLE double minimumTakeoffAltitudeMeters()
Definition Vehicle.cc:1853
InitialConnectStateMachine * _initialConnectStateMachine
Definition Vehicle.h:1130
void sensorsParametersResetAck(bool success)
int firmwareBoardProductId() const
Definition Vehicle.h:669
void sendMavCommandDelayed(int compId, MAV_CMD command, bool showError, int milliseconds, float param1=0.0f, float param2=0.0f, float param3=0.0f, float param4=0.0f, float param5=0.0f, float param6=0.0f, float param7=0.0f)
Definition Vehicle.cc:2149
ComponentInformationManager * compInfoManager()
Definition Vehicle.h:581
bool guidedMode() const
Definition Vehicle.cc:2063
void setEstimatorOrigin_SET_GPS_GLOBAL_ORIGIN(const QGeoCoordinate &centerCoord)
Fallback for setEstimatorOrigin which sends the deprecated SET_GPS_GLOBAL_ORIGIN message.
Definition Vehicle.cc:3168
const QString _distanceSensorFactGroupName
Definition Vehicle.h:1085
Q_INVOKABLE double maximumEquivalentAirspeed()
Definition Vehicle.cc:1864
PIDTuningTelemetryMode
Definition Vehicle.h:374
@ ModeDisabled
Definition Vehicle.h:375
@ ModeAltitudeAndAirspeed
Definition Vehicle.h:378
@ ModeVelocityAndPosition
Definition Vehicle.h:377
@ ModeRateAndAttitude
Definition Vehicle.h:376
void setPrearmError(const QString &prearmError)
Definition Vehicle.cc:2261
bool landing() const
Definition Vehicle.h:505
VehicleVibrationFactGroup * _vibrationFactGroup
Definition Vehicle.h:1101
qreal getInitialGCSTemperature() const
Definition Vehicle.h:417
void checkListStateChanged()
~Vehicle()
Definition Vehicle.cc:388
void setFirmwareCustomVersion(int majorVersion, int minorVersion, int patchVersion)
Definition Vehicle.cc:2284
Q_INVOKABLE void startTimerRevertAllowTakeover()
Definition Vehicle.cc:3200
int messageCount() const
Definition Vehicle.cc:3416
VehicleGeneratorFactGroup * _generatorFactGroup
Definition Vehicle.h:1110
const QString _generatorFactGroupName
Definition Vehicle.h:1091
int firmwareMinorVersion() const
Definition Vehicle.h:662
bool isOfflineEditingVehicle() const
Definition Vehicle.h:514
void messagesSentChanged()
quint64 mavlinkLossCount() const
Total number of sucessful messages received.
Definition Vehicle.h:731
Q_INVOKABLE void sendPlan(QString planFile)
Definition Vehicle.cc:2716
bool vtolInFwdFlight() const
Definition Vehicle.h:508
Q_INVOKABLE void startMission()
Definition Vehicle.cc:1886
bool isMavCommandPending(int targetCompId, MAV_CMD command)
isMavCommandPending Query whether the specified MAV_CMD is in queue to be sent or has already been se...
Definition Vehicle.cc:2193
void capabilitiesKnownChanged(bool capabilitiesKnown)
MAV_AUTOPILOT firmwareType() const
Definition Vehicle.h:431
Q_INVOKABLE void requestOperatorControl(bool allowOverride, int requestTimeoutSecs=0)
Definition Vehicle.cc:3216
void rcChannelsClampedChanged(QVector< int > channelValues)
VehicleEstimatorStatusFactGroup * _estimatorStatusFactGroup
Definition Vehicle.h:1108
VehicleTemperatureFactGroup * _temperatureFactGroup
Definition Vehicle.h:1102
void setCheckListState(CheckList cl)
Definition Vehicle.h:737
bool soloFirmware() const
Definition Vehicle.h:679
void coordinateChanged(QGeoCoordinate coordinate)
QString vehicleImageOpaque() const
Definition Vehicle.cc:2581
float _altitudeTuningOffset
Definition Vehicle.h:1068
Q_INVOKABLE void setPIDTuningTelemetryMode(PIDTuningTelemetryMode mode)
Definition Vehicle.cc:2756
void currentConfigChanged()
void mavlinkLogData(Vehicle *vehicle, uint8_t target_system, uint8_t target_component, uint16_t sequence, uint8_t first_message, QByteArray data, bool acked)
Q_INVOKABLE void emergencyStop()
Command vehicle to kill all motors no matter what state.
Definition Vehicle.cc:2079
void updateFlightDistance(double distance)
Definition Vehicle.cc:2919
int firmwareCustomPatchVersion() const
Definition Vehicle.h:667
int id() const
Definition Vehicle.h:429
const QString _gpsAggregateFactGroupName
Definition Vehicle.h:1079
Q_INVOKABLE bool guidedModeGotoLocation(const QGeoCoordinate &gotoCoord, double forwardFlightLoiterRadius=0.0f)
Definition Vehicle.cc:1891
void pairRX(int rxType, int rxSubType)
Definition Vehicle.cc:3191
const QString _setpointFactGroupName
Definition Vehicle.h:1084
Q_INVOKABLE void setCurrentMissionSequence(int seq)
Alter the current mission item on the vehicle.
Definition Vehicle.cc:2109
FactGroup * gps2FactGroup()
Definition Vehicle.cc:412
void toolIndicatorsChanged()
void sensorsUnhealthyBitsChanged(int sensorsUnhealthyBits)
void landingChanged(bool landing)
bool sendMessageOnLinkThreadSafe(LinkInterface *link, mavlink_message_t message)
Definition Vehicle.cc:1390
VehicleWindFactGroup * _windFactGroup
Definition Vehicle.h:1100
bool inFwdFlight() const
Definition Vehicle.cc:2073
const QString _rpmFactGroupName
Definition Vehicle.h:1093
FactGroup * hygrometerFactGroup()
Definition Vehicle.cc:424
static const MAV_AUTOPILOT MAV_AUTOPILOT_TRACK
Definition Vehicle.h:128
Q_INVOKABLE void startTakeoff()
Definition Vehicle.cc:1880
Q_INVOKABLE void resetAllMessages()
Definition Vehicle.cc:3409
VehicleHygrometerFactGroup * _hygrometerFactGroup
Definition Vehicle.h:1109
void setFlightMode(const QString &flightMode)
Definition Vehicle.cc:1476
bool messageTypeWarning() const
Definition Vehicle.cc:3414
static constexpr int kTestMavCommandMaxWaitMs
Definition Vehicle.h:1061
Q_INVOKABLE void sendCommand(int compId, int command, bool showError, double param1=0.0, double param2=0.0, double param3=0.0, double param4=0.0, double param5=0.0, double param6=0.0, double param7=0.0)
Same as sendMavCommand but available from Qml.
Definition Vehicle.cc:2154
float mavlinkLossPercent() const
Total number of lost messages.
Definition Vehicle.h:732
void loadProgressChanged(float value)
QString smartRTLFlightMode() const
Definition Vehicle.cc:2551
static const MAV_TYPE MAV_TYPE_TRACK
Definition Vehicle.h:129
QString followFlightMode() const
Definition Vehicle.cc:2566
bool _fixed_wing_airspeed_limits_available
Definition Vehicle.h:1072
GeoFenceManager * geoFenceManager()
Definition Vehicle.h:575
Q_INVOKABLE void motorTest(int motor, int percent, int timeoutSecs, bool showError)
Definition Vehicle.cc:2446
void mavlinkMessageReceived(const mavlink_message_t &message)
bool requiresGpsFix() const
Definition Vehicle.h:539
void setMessageRate(uint8_t compId, uint16_t msgId, int32_t rate)
Definition Vehicle.cc:3356
Q_INVOKABLE void resetCounters()
< Flight mode vehicle is in while performing goto
Definition Vehicle.cc:510
const QVariantList & toolIndicators()
Definition Vehicle.cc:2597
void _offlineFirmwareTypeSettingChanged(QVariant varFirmwareType)
Definition Vehicle.cc:474
FactGroup * localPositionSetpointFactGroup()
Definition Vehicle.cc:421
Q_INVOKABLE void guidedModeChangeEquivalentAirspeedMetersSecond(double airspeed)
Definition Vehicle.cc:1932
QmlObjectListModel * escs()
Definition Vehicle.cc:431
void guidedModeChanged(bool guidedMode)
FactGroup * efiFactGroup()
Definition Vehicle.cc:426
void setEventsMetadata(uint8_t compid, const QString &metadataJsonFileName)
Definition Vehicle.cc:3582
QString formattedMessages() const
Definition Vehicle.cc:3417
int _findMavCommandListEntryIndex(int targetCompId, MAV_CMD command)
Test-only helper: forwards to MavCommandQueue::findEntryIndex.
Definition Vehicle.cc:2198
void vehicleUIDChanged()
quint64 vehicleUID() const
Definition Vehicle.h:676
bool autoDisarm()
Definition Vehicle.cc:2617
QGeoCoordinate armedPosition()
Definition Vehicle.h:414
void longitudeChanged()
double loadProgress() const
Definition Vehicle.h:739
RemoteIDManager * remoteIDManager()
Definition Vehicle.h:584
QObject * sysStatusSensorInfo()
Definition Vehicle.cc:433
const QString _vehicleFactGroupName
Definition Vehicle.h:1076
QString motorDetectionFlightMode() const
Definition Vehicle.cc:2571
Q_INVOKABLE void resetErrorLevelMessages()
Definition Vehicle.cc:3410
void sendMavCommandIntWithLambdaFallback(std::function< void()> lambda, int compId, MAV_CMD command, MAV_FRAME frame, bool showError, float param1=0.0f, float param2=0.0f, float param3=0.0f, float param4=0.0f, double param5=0.0, double param6=0.0, float param7=0.0f)
Definition Vehicle.cc:2188
uint8_t baseMode() const
Definition Vehicle.h:509
VehicleFactGroup * _vehicleFactGroup
Definition Vehicle.h:1096
bool coaxialMotors()
Definition Vehicle.cc:1417
void orbitActiveChanged(bool orbitActive)
bool messageTypeNormal() const
Definition Vehicle.cc:3413
void allSensorsHealthyChanged(bool allSensorsHealthy)
FactGroup * vehicleFactGroup()
Definition Vehicle.h:551
static constexpr int kAuxRcOverrideChannelCount
Sends RC_CHANNELS_OVERRIDE for joystick aux axes mapped to RC channels 5–10 only.
Definition Vehicle.h:425
Q_INVOKABLE void guidedModeRTL(bool smartRTL)
Command vehicle to return to launch.
Definition Vehicle.cc:1826
VehicleGPS2FactGroup * _gps2FactGroup
Definition Vehicle.h:1098
bool xConfigMotors()
Definition Vehicle.cc:1422
void trackFirmwareVehicleTypeChanges(void)
Definition Vehicle.cc:212
Q_INVOKABLE void landingGearDeploy()
Command vichecle to deploy landing gear.
Definition Vehicle.cc:2089
static constexpr int kTestMavCommandAckTimeoutMs
Definition Vehicle.h:1060
void armedPositionChanged()
VehicleEFIFactGroup * _efiFactGroup
Definition Vehicle.h:1111
int motorCount()
Definition Vehicle.cc:1408
void stopMavlinkLog()
Definition Vehicle.cc:2476
static QString requestMessageResultHandlerFailureCodeToString(RequestMessageResultHandlerFailureCode_t failureCode)
Definition Vehicle.cc:3366
RemoteIDManager * _remoteIDManager
Definition Vehicle.h:1132
Q_INVOKABLE void doSetHome(const QGeoCoordinate &coord)
Set home from flight map coordinate.
Definition Vehicle.cc:2870
void stopUAVCANBusConfig(void)
Definition Vehicle.cc:2430
void soloFirmwareChanged(bool soloFirmware)
ParameterManager * parameterManager() const
Definition Vehicle.h:578
int firmwareVersionType() const
Definition Vehicle.h:664
uint32_t flowImageIndex() const
Definition Vehicle.cc:3512
int compId() const
Definition Vehicle.h:430
void homePositionChanged(const QGeoCoordinate &homePosition)
const VehicleSigningController * signingController() const
Definition Vehicle.h:543
QMap< uint8_t, uint8_t > _lowestBatteryChargeStateAnnouncedMap
Definition Vehicle.h:1066
FactGroup * radioStatusFactGroup()
Definition Vehicle.cc:428
Q_INVOKABLE void pauseVehicle()
Definition Vehicle.cc:2045
double defaultHoverSpeed() const
Definition Vehicle.h:529
void stopTrackingFirmwareVehicleTypeChanges(void)
Definition Vehicle.cc:221
FactGroup * windFactGroup()
Definition Vehicle.cc:414
void flightModesChanged()
const QString _gps2FactGroupName
Definition Vehicle.h:1078
int sensorsHealthBits() const
Definition Vehicle.h:517
FactGroup * temperatureFactGroup()
Definition Vehicle.cc:416
GimbalController * gimbalController()
Definition Vehicle.h:743
bool apmFirmware() const
Definition Vehicle.h:499
Q_INVOKABLE void closeVehicle()
Removes the vehicle from the system.
Definition Vehicle.cc:435
int sensorsPresentBits() const
Definition Vehicle.h:515
void flightModeChanged(const QString &flightMode)
bool allSensorsHealthy() const
Definition Vehicle.h:537
QString gitHash() const
Definition Vehicle.h:675
void flowImageIndexChanged()
void roiCoordChanged(const QGeoCoordinate &centerCoord)
VehicleObjectAvoidance * objectAvoidance()
Definition Vehicle.h:582
Q_INVOKABLE void clearAllParamMapRC(void)
Clears all PARAM_MAP_RC settings from vehicle.
Definition Vehicle.cc:2958
void messageTypeChanged()
FactGroup * estimatorStatusFactGroup()
Definition Vehicle.cc:422
Q_INVOKABLE void setEstimatorOrigin(const QGeoCoordinate &centerCoord)
Definition Vehicle.cc:3150
void setVtolInFwdFlight(bool vtolInFwdFlight)
Definition Vehicle.cc:2460
Q_INVOKABLE void guidedModeChangeGroundSpeedMetersSecond(double groundspeed)
Definition Vehicle.cc:1922
int defaultComponentId() const
Definition Vehicle.h:682
void setInitialGCSTemperature(qreal temperature)
Definition Vehicle.h:419
void mavlinkStatusChanged()
quint64 mavlinkReceivedCount() const
Calculated total number of messages sent to us.
Definition Vehicle.h:730
MAVLinkLogManager * mavlinkLogManager() const
Definition Vehicle.cc:3527
RallyPointManager * rallyPointManager()
Definition Vehicle.h:576
Q_INVOKABLE void clearMessages()
Definition Vehicle.cc:3411
bool genericFirmware() const
Definition Vehicle.h:500
FactGroup * setpointFactGroup()
Definition Vehicle.cc:418
void sendJoystickDataThreadSafe(float roll, float pitch, float yaw, float thrust, quint16 buttons, quint16 buttons2, float pitchExtension, float rollExtension, float aux1, float aux2, float aux3, float aux4, float aux5, float aux6)
Definition Vehicle.cc:2984
QmlObjectListModel * cameraTriggerPoints()
Definition Vehicle.cc:434
FTPManager * _ftpManager
Definition Vehicle.h:1129
GeoFenceManager * _geoFenceManager
Definition Vehicle.h:1126
float longitude()
Definition Vehicle.h:497
QGCMapCircle * orbitMapCircle()
Definition Vehicle.h:534
bool flightModeSetAvailable()
Definition Vehicle.cc:1455
ParameterManager * parameterManager()
Definition Vehicle.h:577
VehicleGPSFactGroup * _gpsFactGroup
Definition Vehicle.h:1097
void gitHashChanged(QString hash)
int firmwareBoardVendorId() const
Definition Vehicle.h:668
void sensorsHealthBitsChanged(int sensorsHealthBits)
void _setFlying(bool flying)
Definition Vehicle.cc:1805
Q_INVOKABLE void guidedModeChangeHeading(const QGeoCoordinate &headingCoord)
Definition Vehicle.cc:2035
QString takeControlFlightMode() const
Definition Vehicle.cc:2561
void prepareDelete()
Vehicle is about to be deleted.
AutoPilotPlugin * autopilotPlugin()
Provides access to AutoPilotPlugin for this vehicle.
Definition Vehicle.h:445
bool initialPlanRequestComplete() const
Definition Vehicle.h:715
void messagesReceivedChanged()
const QString _localPositionSetpointFactGroupName
Definition Vehicle.h:1087
void setOfflineEditingDefaultComponentId(int defaultComponentId)
Sets the default component id for an offline editing vehicle.
Definition Vehicle.cc:2451
void setFirmwareVersion(int majorVersion, int minorVersion, int patchVersion, FIRMWARE_VERSION_TYPE versionType=FIRMWARE_VERSION_TYPE_OFFICIAL)
Definition Vehicle.cc:2275
QString rtlFlightMode() const
Definition Vehicle.cc:2546
bool fixedWing() const
Definition Vehicle.cc:1736
void requestMessage(RequestMessageResultHandler resultHandler, void *resultHandlerData, int compId, int messageId, float param1=0.0f, float param2=0.0f, float param3=0.0f, float param4=0.0f, float param5=0.0f)
Definition Vehicle.cc:2255
int firmwarePatchVersion() const
Definition Vehicle.h:663
QGeoCoordinate coordinate()
Definition Vehicle.h:413
void startCalibration(QGCMAVLink::CalibrationType calType)
Definition Vehicle.cc:2328
QVector< int > _servoOutputRawValues
Definition Vehicle.h:1117
QString firmwareTypeString() const
Definition Vehicle.cc:505
static constexpr int _mavCommandMaxRetryCount
Definition Vehicle.h:1059
FTPManager * ftpManager()
Definition Vehicle.h:580
FactGroup * clockFactGroup()
Definition Vehicle.cc:417
void stopCalibration(bool showError)
Definition Vehicle.cc:2408
void messageCountChanged()
bool isROIEnabled() const
Running loss rate.
Definition Vehicle.h:734
@ CheckListFailed
Definition Vehicle.h:141
@ CheckListNotSetup
Definition Vehicle.h:139
@ CheckListPassed
Definition Vehicle.h:140
QmlObjectListModel * batteries()
Definition Vehicle.cc:430
void haveFWSpeedLimChanged()
RallyPointManager * _rallyPointManager
Definition Vehicle.h:1127
double defaultCruiseSpeed() const
Definition Vehicle.h:528
void startUAVCANBusConfig(void)
Definition Vehicle.cc:2422
RadioStatusFactGroup * _radioStatusFactGroup
Definition Vehicle.h:1114
QString gotoFlightMode() const
Definition Vehicle.cc:1821
void sendMavCommandIntWithHandler(const MavCmdAckHandlerInfo_t *ackHandlerInfo, int compId, MAV_CMD command, MAV_FRAME frame, float param1=0.0f, float param2=0.0f, float param3=0.0f, float param4=0.0f, double param5=0.0f, double param6=0.0f, float param7=0.0f)
Definition Vehicle.cc:2178
bool armed() const
Definition Vehicle.h:453
Q_INVOKABLE void landingGearRetract()
Command vichecle to retract landing gear.
Definition Vehicle.cc:2099
VehicleSupports * supports()
Definition Vehicle.h:406
bool capabilitiesKnown() const
Definition Vehicle.h:708
const QString _windFactGroupName
Definition Vehicle.h:1080
void mavCommandResult(int vehicleId, int targetComponent, int command, int ackResult, int failureCode)
VehicleGPSAggregateFactGroup * _gpsAggregateFactGroup
Definition Vehicle.h:1099
FactGroup * gpsFactGroup()
Definition Vehicle.cc:411
int firmwareCustomMinorVersion() const
Definition Vehicle.h:666
void sensorsEnabledBitsChanged(int sensorsEnabledBits)
class FirmwarePluginInstanceData * firmwarePluginInstanceData()
Definition Vehicle.h:697
VehicleSetpointFactGroup * _setpointFactGroup
Definition Vehicle.h:1104
Q_INVOKABLE int versionCompare(const QString &compare) const
Used to check if running current version is equal or higher than the one being compared.
Definition Vehicle.cc:2746
int firmwareMajorVersion() const
Definition Vehicle.h:661
TerrainFactGroup * _terrainFactGroup
Definition Vehicle.h:1113
Q_INVOKABLE void forceArm()
Definition Vehicle.cc:1446
void requiresGpsFixChanged()
void setArmed(bool armed, bool showError)
Definition Vehicle.cc:1437
QStringList flightModes()
Definition Vehicle.cc:1460
void mavlinkMsgIntervalsChanged(uint8_t compid, uint16_t msgId, int32_t rate)
FactGroup * terrainFactGroup()
Definition Vehicle.cc:423
void mavlinkSerialControl(uint8_t device, uint8_t flags, uint16_t timeout, uint32_t baudrate, QByteArray data)
Q_INVOKABLE QString vehicleClassInternalName() const
Definition Vehicle.cc:1771
VehicleLinkManager * _vehicleLinkManager
Definition Vehicle.h:1128
void servoOutputsChanged(QVector< int > servoValues)
QString hobbsMeter()
Definition Vehicle.cc:2721
TerrainQueryCoordinator * _terrainQueryCoordinator
Definition Vehicle.h:1136
MissionManager * missionManager()
Definition Vehicle.h:574
void prearmErrorChanged(const QString &prearmError)
void startMavlinkLog()
Definition Vehicle.cc:2471
void vehicleTypeChanged()
Q_INVOKABLE void guidedModeLand()
Command vehicle to land at current location.
Definition Vehicle.cc:1835
void sendMavCommandWithHandler(const MavCmdAckHandlerInfo_t *ackHandlerInfo, int compId, MAV_CMD command, float param1=0.0f, float param2=0.0f, float param3=0.0f, float param4=0.0f, float param5=0.0f, float param6=0.0f, float param7=0.0f)
Sends the command and calls the callback with the result.
Definition Vehicle.cc:2168
uint messagesSent() const
Definition Vehicle.h:502
void setArmedShowError(bool armed)
Definition Vehicle.h:455
bool airship() const
Definition Vehicle.cc:1731
StandardModes * _standardModes
Definition Vehicle.h:1133
QString vehicleUIDStr()
Definition Vehicle.cc:1012
bool spacecraft() const
Definition Vehicle.cc:1751
bool readyToFlyAvailable() const
Definition Vehicle.h:535
QString vehicleTypeString() const
Definition Vehicle.cc:1766
void logData(uint32_t ofs, uint16_t id, uint8_t count, const uint8_t *data)
void(* RequestMessageResultHandler)(void *resultHandlerData, MAV_RESULT commandResult, RequestMessageResultHandlerFailureCode_t failureCode, const mavlink_message_t &message)
Callback for requestMessage — delivered when the ack/message pair resolves or a failure occurs.
struct VehicleTypes::MavCmdAckHandlerInfo_s MavCmdAckHandlerInfo_t
Callback info bundle for sendMavCommandWithHandler.
RequestMessageResultHandlerFailureCode_t
static const int versionNotSetValue