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 void _handleCameraFeedback (const mavlink_message_t& message);
883 void _handleCameraImageCaptured (const mavlink_message_t& message);
884 void _handleCommandLong (const mavlink_message_t& message);
885 void _missionManagerError (int errorCode, const QString& errorMsg);
886 void _geoFenceManagerError (int errorCode, const QString& errorMsg);
887 void _rallyPointManagerError (int errorCode, const QString& errorMsg);
888 void _say (const QString& text);
889 QString _vehicleIdSpeech ();
890 void _handleMavlinkLoggingData (mavlink_message_t& message);
891 void _handleMavlinkLoggingDataAcked (mavlink_message_t& message);
892 void _ackMavlinkLogData (uint16_t sequence);
893 void _commonInit (LinkInterface* link);
894 void _setupAutoDisarmSignalling ();
895 void _setCapabilities (uint64_t capabilityBits);
896 void _updateArmed (bool armed);
897 bool _apmArmingNotRequired ();
898 void _initializeCsv ();
899 void _writeCsvLine ();
900 void _flightTimerStart ();
901 void _flightTimerStop ();
902 void _setMessageInterval (int messageId, int rate);
903 bool setFlightModeCustom (const QString& flightMode, uint8_t* base_mode, uint32_t* custom_mode);
904 QString _formatMavCommand (MAV_CMD command, float param1);
905
906 static void _rebootCommandResultHandler(void* resultHandlerData, int compId, const mavlink_command_ack_t& ack, MavCmdResultFailureCode_t failureCode);
907
908 // The following methods should only be called by unit tests
909 void _deleteGimbalController();
910 void _deleteCameraManager();
911
914 void _stopCommandProcessing();
915
916 int _systemID;
917 int _defaultComponentId;
918 bool _offlineEditingVehicle = false;
919
920 MAV_AUTOPILOT _firmwareType;
921 MAV_TYPE _vehicleType;
922 FirmwarePlugin* _firmwarePlugin = nullptr;
923 class FirmwarePluginInstanceData* _firmwarePluginInstanceData = nullptr;
924 AutoPilotPlugin* _autopilotPlugin = nullptr;
925 bool _soloFirmware = false;
926
927 QTimer _csvLogTimer;
928 QFile _csvLogFile;
929
930 bool _isActiveVehicle = false;
931
932 QGeoCoordinate _coordinate;
933 QGeoCoordinate _homePosition;
934 QGeoCoordinate _armedPosition;
935
936 qreal _initialGCSPressure = 0.;
937 qreal _initialGCSTemperature = 0.;
938
939 bool _flying = false;
940 bool _landing = false;
941 bool _vtolInFwdFlight = false;
942 uint32_t _onboardControlSensorsPresent = 0;
943 uint32_t _onboardControlSensorsEnabled = 0;
944 uint32_t _onboardControlSensorsHealth = 0;
945 uint32_t _onboardControlSensorsUnhealthy = 0;
946 bool _gpsRawIntMessageAvailable = false;
947 bool _gps2RawMessageAvailable = false;
948 bool _globalPositionIntMessageAvailable = false;
949 bool _cameraImageCapturedMessageAvailable = false;
950 double _defaultCruiseSpeed = qQNaN();
951 double _defaultHoverSpeed = qQNaN();
952 bool _capabilityBitsKnown = false;
953 uint64_t _capabilityBits = 0;
954 CheckList _checkListState = CheckListNotSetup;
955 bool _readyToFlyAvailable = false;
956 bool _readyToFly = false;
957 bool _allSensorsHealthy = true;
958 VehicleSigningController* _signingController = nullptr;
959 std::atomic<bool> _joystickAuxRcOverrideActive = false;
960
961 std::unique_ptr<SysStatusSensorInfo> _sysStatusSensorInfo;
962
963
964 QString _prearmError;
965 QTimer _prearmErrorTimer;
966 static const int _prearmErrorTimeoutMSecs = 35 * 1000;
967
968 bool _initialPlanRequestComplete = false;
969
970 ParameterManager* _parameterManager = nullptr;
971 ComponentInformationManager* _componentInformationManager = nullptr;
972 VehicleObjectAvoidance* _objectAvoidance = nullptr;
973 Autotune* _autotune = nullptr;
974 GimbalController* _gimbalController = nullptr;
975 VehicleSupports* _vehicleSupports = nullptr;
976
977 bool _armed = false;
978 uint8_t _base_mode = 0;
979 uint32_t _custom_mode = 0;
980 uint32_t _custom_mode_user_intention = 0;
981 bool _has_custom_mode_user_intention = false;
982 QString _lastAnnouncedFlightMode;
983
985 typedef struct {
986 mavlink_message_t message;
987 int retryCount;
988 } SendMessageMultipleInfo_t;
989
990 QList<SendMessageMultipleInfo_t> _sendMessageMultipleList;
991
992 static const int _sendMessageMultipleRetries = 5;
993 static const int _sendMessageMultipleIntraMessageDelay = 500;
994
995 QTimer _sendMultipleTimer;
996 int _nextSendMessageMultipleIndex = 0;
997
998 QElapsedTimer _flightTimer;
999 QTimer _flightTimeUpdater;
1000 TrajectoryPoints* _trajectoryPoints = nullptr;
1001 std::unique_ptr<QmlObjectListModel> _cameraTriggerPoints;
1002 //QMap<QString, ADSBVehicle*> _trafficVehicleMap;
1003
1004 bool _allLinksRemovedSent = false;
1005
1006 uint _messagesReceived = 0;
1007 uint _messagesSent = 0;
1008 uint _messagesLost = 0;
1009 uint8_t _messageSeq = 0;
1010 uint8_t _compID = 0;
1011 bool _heardFrom = false;
1012
1013 bool _isROIEnabled = false;
1014\
1015 bool _checkLatestStableFWDone = false;
1016 int _firmwareMajorVersion = versionNotSetValue;
1017 int _firmwareMinorVersion = versionNotSetValue;
1018 int _firmwarePatchVersion = versionNotSetValue;
1019 int _firmwareCustomMajorVersion = versionNotSetValue;
1020 int _firmwareCustomMinorVersion = versionNotSetValue;
1021 int _firmwareCustomPatchVersion = versionNotSetValue;
1022 FIRMWARE_VERSION_TYPE _firmwareVersionType = FIRMWARE_VERSION_TYPE_OFFICIAL;
1023
1024 // Vendor and Product as reported from the first autopilot version message
1025 // during the initial connect. They may be zero eg ArduPilot SITL reports 0
1026 // by default.
1027 uint16_t _firmwareBoardVendorId = 0;
1028 uint16_t _firmwareBoardProductId = 0;
1029
1030
1031 QString _gitHash;
1032 quint64 _uid = 0;
1033
1034 uint64_t _mavlinkSentCount = 0;
1035 uint64_t _mavlinkReceivedCount = 0;
1036 uint64_t _mavlinkLossCount = 0;
1037 float _mavlinkLossPercent = 0.0f;
1038
1039 float _loadProgress = 0.0f;
1040
1041 QMap<QString, QTime> _noisySpokenPrearmMap;
1042
1043 // Orbit status values
1044 bool _orbitActive = false;
1045 std::unique_ptr<QGCMapCircle> _orbitMapCircle;
1046 QTimer _orbitTelemetryTimer;
1047 static const int _orbitTelemetryTimeoutMsecs = 3000; // No telemetry for this amount and orbit will go inactive
1048
1049 std::unique_ptr<MAVLinkStreamConfig> _mavlinkStreamConfig;
1050
1051 MavCommandQueue* _mavCmdQueue = nullptr;
1052 RequestMessageCoordinator* _reqMsgCoord = nullptr;
1053
1054public:
1057 static constexpr int _mavCommandMaxRetryCount = 3;
1058 static constexpr int kTestMavCommandAckTimeoutMs = 500;
1060
1062 int _findMavCommandListEntryIndex(int targetCompId, MAV_CMD command);
1063
1064 QMap<uint8_t /* batteryId */, uint8_t /* MAV_BATTERY_CHARGE_STATE_OK */> _lowestBatteryChargeStateAnnouncedMap;
1065
1066 float _altitudeTuningOffset = qQNaN(); // altitude offset, so the plotted value is around 0
1067
1068 // these flags are used to determine if the speed change action from fly view should be shown
1071
1072 // FactGroup facts
1073
1074 const QString _vehicleFactGroupName = QStringLiteral("vehicle");
1075 const QString _gpsFactGroupName = QStringLiteral("gps");
1076 const QString _gps2FactGroupName = QStringLiteral("gps2");
1077 const QString _gpsAggregateFactGroupName = QStringLiteral("gpsAggregate");
1078 const QString _windFactGroupName = QStringLiteral("wind");
1079 const QString _vibrationFactGroupName = QStringLiteral("vibration");
1080 const QString _temperatureFactGroupName = QStringLiteral("temperature");
1081 const QString _clockFactGroupName = QStringLiteral("clock");
1082 const QString _setpointFactGroupName = QStringLiteral("setpoint");
1083 const QString _distanceSensorFactGroupName = QStringLiteral("distanceSensor");
1084 const QString _localPositionFactGroupName = QStringLiteral("localPosition");
1085 const QString _localPositionSetpointFactGroupName = QStringLiteral("localPositionSetpoint");
1086 const QString _estimatorStatusFactGroupName = QStringLiteral("estimatorStatus");
1087 const QString _terrainFactGroupName = QStringLiteral("terrain");
1088 const QString _hygrometerFactGroupName = QStringLiteral("hygrometer");
1089 const QString _generatorFactGroupName = QStringLiteral("generator");
1090 const QString _efiFactGroupName = QStringLiteral("efi");
1091 const QString _rpmFactGroupName = QStringLiteral("rpm");
1092 const QString _radioStatusFactGroupName = QStringLiteral("radioStatus");
1093
1113
1114 // Live SERVO_OUTPUT_RAW values (microseconds). Indexed 0..15 -> SERVO1..SERVO16.
1115 QVector<int> _servoOutputRawValues = QVector<int>(16, -1);
1116
1117 // Dynamic FactGroups
1120
1122
1132
1133 // All terrain query workflows (doSetHome, ROI, altAboveTerrain) live in the coordinator.
1135
1136public:
1137 int32_t getMessageRate(uint8_t compId, uint16_t msgId);
1138 void setMessageRate(uint8_t compId, uint16_t msgId, int32_t rate);
1139
1140signals:
1141 // Re-emitted from MessageIntervalManager so existing consumers keep working.
1142 void mavlinkMsgIntervalsChanged(uint8_t compid, uint16_t msgId, int32_t rate);
1143
1144private:
1145 MessageIntervalManager* _messageIntervalManager = nullptr;
1146
1147/*---------------------------------------------------------------------------*/
1148/*===========================================================================*/
1149/* ardupilotmega Dialect */
1150/*===========================================================================*/
1151public:
1152 Q_INVOKABLE void flashBootloader();
1153
1155 Q_INVOKABLE void motorInterlock(bool enable);
1156
1157/*---------------------------------------------------------------------------*/
1158/*===========================================================================*/
1159/* CONTROL STATUS HANDLER */
1160/*===========================================================================*/
1161public:
1162 Q_INVOKABLE void startTimerRevertAllowTakeover();
1163 Q_INVOKABLE void requestOperatorControl(bool allowOverride, int requestTimeoutSecs = 0);
1164
1165private:
1166 void _handleControlStatus(const mavlink_message_t& message);
1167 void _handleCommandRequestOperatorControl(const mavlink_command_long_t commandLong);
1168 static void _requestOperatorControlAckHandler(void* resultHandlerData, int compId, const mavlink_command_ack_t& ack, MavCmdResultFailureCode_t failureCode);
1169
1170 Q_PROPERTY(uint8_t gcsMain READ gcsMain NOTIFY gcsControlStatusChanged)
1171 Q_PROPERTY(bool gcsControlStatusFlags_SystemManager READ gcsControlStatusFlags_SystemManager NOTIFY gcsControlStatusChanged)
1172 Q_PROPERTY(bool gcsControlStatusFlags_TakeoverAllowed READ gcsControlStatusFlags_TakeoverAllowed NOTIFY gcsControlStatusChanged)
1173 Q_PROPERTY(bool firstControlStatusReceived READ firstControlStatusReceived NOTIFY gcsControlStatusChanged)
1174 Q_PROPERTY(int operatorControlTakeoverTimeoutMsecs READ operatorControlTakeoverTimeoutMsecs CONSTANT)
1175 Q_PROPERTY(int requestOperatorControlRemainingMsecs READ requestOperatorControlRemainingMsecs CONSTANT)
1176 Q_PROPERTY(bool sendControlRequestAllowed READ sendControlRequestAllowed NOTIFY sendControlRequestAllowedChanged)
1177
1178 uint8_t gcsMain() const { return _gcsMain; }
1179 bool gcsControlStatusFlags_SystemManager() const { return _gcsControlStatusFlags_SystemManager; }
1180 bool gcsControlStatusFlags_TakeoverAllowed() const { return _gcsControlStatusFlags_TakeoverAllowed; }
1181 bool firstControlStatusReceived() const { return _firstControlStatusReceived; }
1182 int operatorControlTakeoverTimeoutMsecs() const;
1183 int requestOperatorControlRemainingMsecs() const { return _timerRequestOperatorControl.remainingTime(); }
1184 bool sendControlRequestAllowed() const { return _sendControlRequestAllowed; }
1185 void requestOperatorControlStartTimer(int requestTimeoutMsecs);
1186
1187 uint8_t _gcsMain = 0;
1188 uint8_t _gcsControlStatusFlags = 0;
1189 bool _gcsControlStatusFlags_SystemManager = 0;
1190 bool _gcsControlStatusFlags_TakeoverAllowed = 0;
1191 bool _firstControlStatusReceived = false;
1192 QTimer _timerRevertAllowTakeover;
1193 QTimer _timerRequestOperatorControl;
1194 bool _sendControlRequestAllowed = true;
1195
1196signals:
1198 void requestOperatorControlReceived(int sysIdRequestingControl, int allowTakeover, int requestTimeoutSecs);
1199 void sendControlRequestAllowedChanged(bool sendControlRequestAllowed);
1200
1201/*===========================================================================*/
1202/* STATUS TEXT HANDLER */
1203/*===========================================================================*/
1204private:
1205 Q_PROPERTY(bool messageTypeNone READ messageTypeNone NOTIFY messageTypeChanged)
1206 Q_PROPERTY(bool messageTypeNormal READ messageTypeNormal NOTIFY messageTypeChanged)
1207 Q_PROPERTY(bool messageTypeWarning READ messageTypeWarning NOTIFY messageTypeChanged)
1208 Q_PROPERTY(bool messageTypeError READ messageTypeError NOTIFY messageTypeChanged)
1209 Q_PROPERTY(int messageCount READ messageCount NOTIFY messageCountChanged)
1210 Q_PROPERTY(QString formattedMessages READ formattedMessages NOTIFY formattedMessagesChanged)
1211
1212 // Q_PROPERTY(StatusTextHandler *statusTextHandler READ statusTextHandler NOTIFY statusTextHandlerChanged)
1213
1214public:
1215 Q_INVOKABLE void resetAllMessages();
1216 Q_INVOKABLE void resetErrorLevelMessages();
1217 Q_INVOKABLE void clearMessages();
1218
1219 bool messageTypeNone() const;
1220 bool messageTypeNormal() const;
1221 bool messageTypeWarning() const;
1222 bool messageTypeError() const;
1223 int messageCount() const;
1224 QString formattedMessages() const;
1225
1226 // StatusTextHandler* statusTextHandler() { return m_statusTextHandler; }
1227
1228signals:
1229 void textMessageReceived(int sysid, int componentid, int severity, QString text, QString description);
1230
1237 void newFormattedMessage(QString formattedMessage);
1238
1239 // void statusTextHandlerChanged();
1240
1241private slots:
1242 void _onStatusTextFromEvent(uint8_t compid, int severity, const QString &text, const QString &description);
1243 void _textMessageReceived(MAV_COMPONENT componentid, MAV_SEVERITY severity, QString text, QString description);
1244 void _errorMessageReceived(QString message);
1245
1246private:
1247 void _createStatusTextHandler();
1248
1249 StatusTextHandler *m_statusTextHandler = nullptr;
1250
1251/*---------------------------------------------------------------------------*/
1252/*===========================================================================*/
1253/* Image Protocol Manager */
1254/*===========================================================================*/
1255private:
1256 Q_PROPERTY(uint flowImageIndex READ flowImageIndex NOTIFY flowImageIndexChanged)
1257
1258public:
1259 uint32_t flowImageIndex() const;
1260
1261signals:
1263
1264private:
1265 void _createImageProtocolManager();
1266 void _createSigningController();
1267
1268 ImageProtocolManager *_imageProtocolManager = nullptr;
1269
1270/*---------------------------------------------------------------------------*/
1271/*===========================================================================*/
1272/* MAVLink Log Manager */
1273/*===========================================================================*/
1274private:
1276
1277public:
1279
1280signals:
1282
1283private:
1284 void _createMAVLinkLogManager();
1285
1286 MAVLinkLogManager *_mavlinkLogManager = nullptr;
1287
1288/*---------------------------------------------------------------------------*/
1289/*===========================================================================*/
1290/* Camera Manager */
1291/*===========================================================================*/
1292private:
1293 Q_MOC_INCLUDE("QGCCameraManager.h")
1295 Q_PROPERTY(QVariantList staticCameraList READ staticCameraList CONSTANT)
1296
1297public:
1298 QGCCameraManager *cameraManager() { return _cameraManager; }
1299 const QVariantList &staticCameraList() const;
1300
1301signals:
1303
1304private:
1305 void _createCameraManager();
1306
1307 QGCCameraManager *_cameraManager = nullptr;
1308
1309/*---------------------------------------------------------------------------*/
1310/*===========================================================================*/
1311/* MAVLinkEventsManager */
1312/*===========================================================================*/
1313private:
1314 Q_MOC_INCLUDE("HealthAndArmingCheckReport.h")
1316
1317public:
1319
1320 void setEventsMetadata(uint8_t compid, const QString& metadataJsonFileName);
1321
1322private:
1323 void _createMAVLinkEventManager();
1324 void _handleEventMessage(const mavlink_message_t& msg);
1325 bool _healthAndArmingChecksSupported(uint8_t compid);
1326
1327 std::unique_ptr<MAVLinkEventManager> _eventManager;
1328};
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:3125
bool sub() const
Definition Vehicle.cc:1742
bool readyToFly() const
Definition Vehicle.h:536
bool isInitialConnectComplete() const
Definition Vehicle.cc:2801
Q_INVOKABLE void guidedModeChangeAltitude(double altitudeChange, bool pauseVehicle)
Definition Vehicle.cc:1908
void _setLanding(bool landing)
Definition Vehicle.cc:1809
void autoDisarmChanged()
QGCCameraManager * cameraManager()
Definition Vehicle.h:1298
bool px4Firmware() const
Definition Vehicle.h:498
Q_INVOKABLE void motorInterlock(bool enable)
Command vehicle to Enable/Disable Motor Interlock.
Definition Vehicle.cc:3386
Q_INVOKABLE void virtualTabletJoystickValue(double roll, double pitch, double yaw, double thrust)
Definition Vehicle.cc:1706
int32_t getMessageRate(uint8_t compId, uint16_t msgId)
Definition Vehicle.cc:3345
VehicleDistanceSensorFactGroup * _distanceSensorFactGroup
Definition Vehicle.h:1103
TerrainProtocolHandler * _terrainProtocolHandler
Definition Vehicle.h:1121
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:3374
uint messagesReceived() const
Definition Vehicle.h:501
void sensorsPresentBitsChanged(int sensorsPresentBits)
void defaultHoverSpeedChanged(double hoverSpeed)
const QString _vibrationFactGroupName
Definition Vehicle.h:1079
bool _multirotor_speed_limits_available
Definition Vehicle.h:1069
void gcsControlStatusChanged()
void defaultCruiseSpeedChanged(double cruiseSpeed)
bool messageTypeError() const
Definition Vehicle.cc:3409
const QString _gpsFactGroupName
Definition Vehicle.h:1075
FactGroup * localPositionFactGroup()
Definition Vehicle.cc:420
void setActuatorsMetadata(uint8_t compid, const QString &metadataJsonFileName, const QJsonDocument &metadataJson)
Definition Vehicle.cc:1261
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:2179
BatteryFactGroupListModel * _batteryFactGroupListModel
Definition Vehicle.h:1118
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:2140
VehicleLocalPositionFactGroup * _localPositionFactGroup
Definition Vehicle.h:1104
const QString _hygrometerFactGroupName
Definition Vehicle.h:1088
void messagesLostChanged()
Q_INVOKABLE void rebootVehicle()
Reboot vehicle.
Definition Vehicle.cc:2313
FactGroup * gpsAggregateFactGroup()
Definition Vehicle.cc:413
VehicleRPMFactGroup * _rpmFactGroup
Definition Vehicle.h:1110
const QString _localPositionFactGroupName
Definition Vehicle.h:1084
void vtolInFwdFlightChanged(bool vtolInFwdFlight)
qreal getInitialGCSPressure() const
Definition Vehicle.h:416
QString missionFlightMode() const
Definition Vehicle.cc:2530
void readyToFlyAvailableChanged(bool readyToFlyAvailable)
void forceInitialPlanRequestComplete()
Definition Vehicle.cc:2704
void isROIEnabledChanged()
Actuators * actuators() const
Definition Vehicle.h:541
Q_INVOKABLE void guidedModeOrbit(const QGeoCoordinate &centerCoord, double radius, double amslAltitude)
Definition Vehicle.cc:1937
const QString _terrainFactGroupName
Definition Vehicle.h:1087
Actuators * _actuators
Definition Vehicle.h:1129
Autotune * autotune() const
Definition Vehicle.h:583
const QString _temperatureFactGroupName
Definition Vehicle.h:1080
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:1840
Q_INVOKABLE void sendGripperAction(GRIPPER_ACTIONS gripperOption)
Definition Vehicle.cc:3134
bool haveMRSpeedLimits() const
Definition Vehicle.h:408
QString flightMode() const
Definition Vehicle.cc:1462
bool orbitActive() const
Definition Vehicle.h:533
static QString mavCmdResultFailureCodeToString(MavCmdResultFailureCode_t failureCode)
Definition Vehicle.cc:3365
QString stabilizedFlightMode() const
Definition Vehicle.cc:2570
int firmwareCustomMajorVersion() const
Definition Vehicle.h:665
const QVariantList & staticCameraList() const
Definition Vehicle.cc:3539
void requestOperatorControlReceived(int sysIdRequestingControl, int allowTakeover, int requestTimeoutSecs)
Q_INVOKABLE QVariant expandedToolbarIndicatorSource(const QString &indicatorName)
Definition Vehicle.cc:3355
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:3038
bool vtol() const
Definition Vehicle.cc:1757
void setSoloFirmware(bool soloFirmware)
Definition Vehicle.cc:2432
void mavlinkLogManagerChanged()
void requestDataStream(MAV_DATA_STREAM stream, uint16_t rate, bool sendMultiple=true)
Definition Vehicle.cc:1523
FactGroup * rpmFactGroup()
Definition Vehicle.cc:427
QGeoCoordinate homePosition()
Definition Vehicle.cc:1428
const QString _estimatorStatusFactGroupName
Definition Vehicle.h:1086
const QString _radioStatusFactGroupName
Definition Vehicle.h:1092
QString vehicleImageOutline() const
Definition Vehicle.cc:2583
MissionManager * _missionManager
Definition Vehicle.h:1123
void initialConnectComplete()
VehicleLocalPositionSetpointFactGroup * _localPositionSetpointFactGroup
Definition Vehicle.h:1105
void textMessageReceived(int sysid, int componentid, int severity, QString text, QString description)
void initialPlanRequestCompleteChanged(bool initialPlanRequestComplete)
Q_INVOKABLE double minimumEquivalentAirspeed()
Definition Vehicle.cc:1866
const QString _clockFactGroupName
Definition Vehicle.h:1081
bool rover() const
Definition Vehicle.cc:1737
bool multiRotor() const
Definition Vehicle.cc:1752
bool flying() const
Definition Vehicle.h:504
Q_INVOKABLE void stopGuidedModeROI()
Definition Vehicle.cc:1997
void firmwareCustomVersionChanged()
QString pauseFlightMode() const
Definition Vehicle.cc:2535
QString prearmError() const
Definition Vehicle.h:477
int sensorsEnabledBits() const
Definition Vehicle.h:516
EscStatusFactGroupListModel * _escStatusFactGroupListModel
Definition Vehicle.h:1119
Q_INVOKABLE void guidedModeROI(const QGeoCoordinate &centerCoord)
Definition Vehicle.cc:1969
float latitude()
Definition Vehicle.h:496
const QString _efiFactGroupName
Definition Vehicle.h:1090
void inFwdFlightChanged()
void flyingChanged(bool flying)
void setFirmwarePluginInstanceData(FirmwarePluginInstanceData *firmwarePluginInstanceData)
Definition Vehicle.cc:2524
Q_INVOKABLE double maximumHorizontalSpeedMultirotorMetersSecond()
Definition Vehicle.cc:1854
bool hasGripper() const
Definition Vehicle.cc:1871
void sendMessageMultiple(mavlink_message_t message)
Definition Vehicle.cc:1581
void capabilityBitsChanged(uint64_t capabilityBits)
bool messageTypeNone() const
Definition Vehicle.cc:3406
bool haveFWSpeedLimits() const
Definition Vehicle.h:409
int sensorsUnhealthyBits() const
Definition Vehicle.h:518
void _setHomePosition(QGeoCoordinate &homeCoord)
Definition Vehicle.cc:1184
void hobbsMeterChanged()
VehicleClockFactGroup * _clockFactGroup
Definition Vehicle.h:1101
uint64_t capabilityBits() const
Definition Vehicle.h:709
Q_INVOKABLE void abortLanding(double climbOutAltitude)
Command vehicle to abort landing.
Definition Vehicle.cc:2050
void setGuidedMode(bool guidedMode)
Definition Vehicle.cc:2064
void readyToFlyChanged(bool readyToFy)
QString firmwareVersionTypeString() const
Definition Vehicle.cc:2286
QString landFlightMode() const
Definition Vehicle.cc:2550
static void showCommandAckError(const mavlink_command_ack_t &ack)
Definition Vehicle.cc:2199
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:2918
HealthAndArmingCheckReport * healthAndArmingCheckReport()
Definition Vehicle.cc:3571
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:2169
Q_INVOKABLE double minimumTakeoffAltitudeMeters()
Definition Vehicle.cc:1849
InitialConnectStateMachine * _initialConnectStateMachine
Definition Vehicle.h:1128
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:2145
ComponentInformationManager * compInfoManager()
Definition Vehicle.h:581
bool guidedMode() const
Definition Vehicle.cc:2059
void setEstimatorOrigin_SET_GPS_GLOBAL_ORIGIN(const QGeoCoordinate &centerCoord)
Fallback for setEstimatorOrigin which sends the deprecated SET_GPS_GLOBAL_ORIGIN message.
Definition Vehicle.cc:3162
const QString _distanceSensorFactGroupName
Definition Vehicle.h:1083
Q_INVOKABLE double maximumEquivalentAirspeed()
Definition Vehicle.cc:1860
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:2255
bool landing() const
Definition Vehicle.h:505
VehicleVibrationFactGroup * _vibrationFactGroup
Definition Vehicle.h:1099
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:2278
Q_INVOKABLE void startTimerRevertAllowTakeover()
Definition Vehicle.cc:3194
int messageCount() const
Definition Vehicle.cc:3410
VehicleGeneratorFactGroup * _generatorFactGroup
Definition Vehicle.h:1108
const QString _generatorFactGroupName
Definition Vehicle.h:1089
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:2710
bool vtolInFwdFlight() const
Definition Vehicle.h:508
Q_INVOKABLE void startMission()
Definition Vehicle.cc:1882
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:2189
void capabilitiesKnownChanged(bool capabilitiesKnown)
MAV_AUTOPILOT firmwareType() const
Definition Vehicle.h:431
Q_INVOKABLE void requestOperatorControl(bool allowOverride, int requestTimeoutSecs=0)
Definition Vehicle.cc:3210
void rcChannelsClampedChanged(QVector< int > channelValues)
VehicleEstimatorStatusFactGroup * _estimatorStatusFactGroup
Definition Vehicle.h:1106
VehicleTemperatureFactGroup * _temperatureFactGroup
Definition Vehicle.h:1100
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:2575
float _altitudeTuningOffset
Definition Vehicle.h:1066
Q_INVOKABLE void setPIDTuningTelemetryMode(PIDTuningTelemetryMode mode)
Definition Vehicle.cc:2750
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:2075
void updateFlightDistance(double distance)
Definition Vehicle.cc:2913
int firmwareCustomPatchVersion() const
Definition Vehicle.h:667
int id() const
Definition Vehicle.h:429
const QString _gpsAggregateFactGroupName
Definition Vehicle.h:1077
Q_INVOKABLE bool guidedModeGotoLocation(const QGeoCoordinate &gotoCoord, double forwardFlightLoiterRadius=0.0f)
Definition Vehicle.cc:1887
void pairRX(int rxType, int rxSubType)
Definition Vehicle.cc:3185
const QString _setpointFactGroupName
Definition Vehicle.h:1082
Q_INVOKABLE void setCurrentMissionSequence(int seq)
Alter the current mission item on the vehicle.
Definition Vehicle.cc:2105
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:1386
VehicleWindFactGroup * _windFactGroup
Definition Vehicle.h:1098
bool inFwdFlight() const
Definition Vehicle.cc:2069
const QString _rpmFactGroupName
Definition Vehicle.h:1091
FactGroup * hygrometerFactGroup()
Definition Vehicle.cc:424
static const MAV_AUTOPILOT MAV_AUTOPILOT_TRACK
Definition Vehicle.h:128
Q_INVOKABLE void startTakeoff()
Definition Vehicle.cc:1876
Q_INVOKABLE void resetAllMessages()
Definition Vehicle.cc:3403
VehicleHygrometerFactGroup * _hygrometerFactGroup
Definition Vehicle.h:1107
void setFlightMode(const QString &flightMode)
Definition Vehicle.cc:1472
bool messageTypeWarning() const
Definition Vehicle.cc:3408
static constexpr int kTestMavCommandMaxWaitMs
Definition Vehicle.h:1059
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:2150
float mavlinkLossPercent() const
Total number of lost messages.
Definition Vehicle.h:732
void loadProgressChanged(float value)
QString smartRTLFlightMode() const
Definition Vehicle.cc:2545
static const MAV_TYPE MAV_TYPE_TRACK
Definition Vehicle.h:129
QString followFlightMode() const
Definition Vehicle.cc:2560
bool _fixed_wing_airspeed_limits_available
Definition Vehicle.h:1070
GeoFenceManager * geoFenceManager()
Definition Vehicle.h:575
Q_INVOKABLE void motorTest(int motor, int percent, int timeoutSecs, bool showError)
Definition Vehicle.cc:2440
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:3350
Q_INVOKABLE void resetCounters()
< Flight mode vehicle is in while performing goto
Definition Vehicle.cc:510
const QVariantList & toolIndicators()
Definition Vehicle.cc:2591
void _offlineFirmwareTypeSettingChanged(QVariant varFirmwareType)
Definition Vehicle.cc:474
FactGroup * localPositionSetpointFactGroup()
Definition Vehicle.cc:421
Q_INVOKABLE void guidedModeChangeEquivalentAirspeedMetersSecond(double airspeed)
Definition Vehicle.cc:1928
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:3576
QString formattedMessages() const
Definition Vehicle.cc:3411
int _findMavCommandListEntryIndex(int targetCompId, MAV_CMD command)
Test-only helper: forwards to MavCommandQueue::findEntryIndex.
Definition Vehicle.cc:2194
void vehicleUIDChanged()
quint64 vehicleUID() const
Definition Vehicle.h:676
bool autoDisarm()
Definition Vehicle.cc:2611
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:1074
QString motorDetectionFlightMode() const
Definition Vehicle.cc:2565
Q_INVOKABLE void resetErrorLevelMessages()
Definition Vehicle.cc:3404
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:2184
uint8_t baseMode() const
Definition Vehicle.h:509
VehicleFactGroup * _vehicleFactGroup
Definition Vehicle.h:1094
bool coaxialMotors()
Definition Vehicle.cc:1413
void orbitActiveChanged(bool orbitActive)
bool messageTypeNormal() const
Definition Vehicle.cc:3407
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:1822
VehicleGPS2FactGroup * _gps2FactGroup
Definition Vehicle.h:1096
bool xConfigMotors()
Definition Vehicle.cc:1418
void trackFirmwareVehicleTypeChanges(void)
Definition Vehicle.cc:212
Q_INVOKABLE void landingGearDeploy()
Command vichecle to deploy landing gear.
Definition Vehicle.cc:2085
static constexpr int kTestMavCommandAckTimeoutMs
Definition Vehicle.h:1058
void armedPositionChanged()
VehicleEFIFactGroup * _efiFactGroup
Definition Vehicle.h:1109
int motorCount()
Definition Vehicle.cc:1404
void stopMavlinkLog()
Definition Vehicle.cc:2470
static QString requestMessageResultHandlerFailureCodeToString(RequestMessageResultHandlerFailureCode_t failureCode)
Definition Vehicle.cc:3360
RemoteIDManager * _remoteIDManager
Definition Vehicle.h:1130
Q_INVOKABLE void doSetHome(const QGeoCoordinate &coord)
Set home from flight map coordinate.
Definition Vehicle.cc:2864
void stopUAVCANBusConfig(void)
Definition Vehicle.cc:2424
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:3506
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:1064
FactGroup * radioStatusFactGroup()
Definition Vehicle.cc:428
Q_INVOKABLE void pauseVehicle()
Definition Vehicle.cc:2041
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:1076
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:2952
void messageTypeChanged()
FactGroup * estimatorStatusFactGroup()
Definition Vehicle.cc:422
Q_INVOKABLE void setEstimatorOrigin(const QGeoCoordinate &centerCoord)
Definition Vehicle.cc:3144
void setVtolInFwdFlight(bool vtolInFwdFlight)
Definition Vehicle.cc:2454
Q_INVOKABLE void guidedModeChangeGroundSpeedMetersSecond(double groundspeed)
Definition Vehicle.cc:1918
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:3521
RallyPointManager * rallyPointManager()
Definition Vehicle.h:576
Q_INVOKABLE void clearMessages()
Definition Vehicle.cc:3405
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:2978
QmlObjectListModel * cameraTriggerPoints()
Definition Vehicle.cc:434
FTPManager * _ftpManager
Definition Vehicle.h:1127
GeoFenceManager * _geoFenceManager
Definition Vehicle.h:1124
float longitude()
Definition Vehicle.h:497
QGCMapCircle * orbitMapCircle()
Definition Vehicle.h:534
bool flightModeSetAvailable()
Definition Vehicle.cc:1451
ParameterManager * parameterManager()
Definition Vehicle.h:577
VehicleGPSFactGroup * _gpsFactGroup
Definition Vehicle.h:1095
void gitHashChanged(QString hash)
int firmwareBoardVendorId() const
Definition Vehicle.h:668
void sensorsHealthBitsChanged(int sensorsHealthBits)
void _setFlying(bool flying)
Definition Vehicle.cc:1801
Q_INVOKABLE void guidedModeChangeHeading(const QGeoCoordinate &headingCoord)
Definition Vehicle.cc:2031
QString takeControlFlightMode() const
Definition Vehicle.cc:2555
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:1085
void setOfflineEditingDefaultComponentId(int defaultComponentId)
Sets the default component id for an offline editing vehicle.
Definition Vehicle.cc:2445
void setFirmwareVersion(int majorVersion, int minorVersion, int patchVersion, FIRMWARE_VERSION_TYPE versionType=FIRMWARE_VERSION_TYPE_OFFICIAL)
Definition Vehicle.cc:2269
QString rtlFlightMode() const
Definition Vehicle.cc:2540
bool fixedWing() const
Definition Vehicle.cc:1732
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:2249
int firmwarePatchVersion() const
Definition Vehicle.h:663
QGeoCoordinate coordinate()
Definition Vehicle.h:413
void startCalibration(QGCMAVLink::CalibrationType calType)
Definition Vehicle.cc:2322
QVector< int > _servoOutputRawValues
Definition Vehicle.h:1115
QString firmwareTypeString() const
Definition Vehicle.cc:505
static constexpr int _mavCommandMaxRetryCount
Definition Vehicle.h:1057
FTPManager * ftpManager()
Definition Vehicle.h:580
FactGroup * clockFactGroup()
Definition Vehicle.cc:417
void stopCalibration(bool showError)
Definition Vehicle.cc:2402
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:1125
double defaultCruiseSpeed() const
Definition Vehicle.h:528
void startUAVCANBusConfig(void)
Definition Vehicle.cc:2416
RadioStatusFactGroup * _radioStatusFactGroup
Definition Vehicle.h:1112
QString gotoFlightMode() const
Definition Vehicle.cc:1817
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:2174
bool armed() const
Definition Vehicle.h:453
Q_INVOKABLE void landingGearRetract()
Command vichecle to retract landing gear.
Definition Vehicle.cc:2095
VehicleSupports * supports()
Definition Vehicle.h:406
bool capabilitiesKnown() const
Definition Vehicle.h:708
const QString _windFactGroupName
Definition Vehicle.h:1078
void mavCommandResult(int vehicleId, int targetComponent, int command, int ackResult, int failureCode)
VehicleGPSAggregateFactGroup * _gpsAggregateFactGroup
Definition Vehicle.h:1097
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:1102
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:2740
int firmwareMajorVersion() const
Definition Vehicle.h:661
TerrainFactGroup * _terrainFactGroup
Definition Vehicle.h:1111
Q_INVOKABLE void forceArm()
Definition Vehicle.cc:1442
void requiresGpsFixChanged()
void setArmed(bool armed, bool showError)
Definition Vehicle.cc:1433
QStringList flightModes()
Definition Vehicle.cc:1456
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:1767
VehicleLinkManager * _vehicleLinkManager
Definition Vehicle.h:1126
void servoOutputsChanged(QVector< int > servoValues)
QString hobbsMeter()
Definition Vehicle.cc:2715
TerrainQueryCoordinator * _terrainQueryCoordinator
Definition Vehicle.h:1134
MissionManager * missionManager()
Definition Vehicle.h:574
void prearmErrorChanged(const QString &prearmError)
void startMavlinkLog()
Definition Vehicle.cc:2465
void vehicleTypeChanged()
Q_INVOKABLE void guidedModeLand()
Command vehicle to land at current location.
Definition Vehicle.cc:1831
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:2164
uint messagesSent() const
Definition Vehicle.h:502
void setArmedShowError(bool armed)
Definition Vehicle.h:455
bool airship() const
Definition Vehicle.cc:1727
StandardModes * _standardModes
Definition Vehicle.h:1131
QString vehicleUIDStr()
Definition Vehicle.cc:1008
bool spacecraft() const
Definition Vehicle.cc:1747
bool readyToFlyAvailable() const
Definition Vehicle.h:535
QString vehicleTypeString() const
Definition Vehicle.cc:1762
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