QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
MockConfiguration.h
Go to the documentation of this file.
1#pragma once
2
3#include "LinkConfiguration.h"
4
5#include "MAVLinkEnums.h"
6
8{
9 Q_OBJECT
10 Q_PROPERTY(int firmware READ firmware WRITE setFirmware NOTIFY firmwareChanged)
11 Q_PROPERTY(int vehicle READ vehicle WRITE setVehicle NOTIFY vehicleChanged)
12 Q_PROPERTY(bool sendStatus READ sendStatusText WRITE setSendStatusText NOTIFY sendStatusChanged)
14 Q_PROPERTY(bool enableCamera READ enableCamera WRITE setEnableCamera NOTIFY enableCameraChanged)
15 Q_PROPERTY(bool enableGimbal READ enableGimbal WRITE setEnableGimbal NOTIFY enableGimbalChanged)
35
36public:
37 explicit MockConfiguration(const QString &name, QObject *parent = nullptr);
38 explicit MockConfiguration(const MockConfiguration *copy, QObject *parent = nullptr);
40
53 Q_DECLARE_FLAGS(Options, Option)
54 Q_FLAG(Options)
55
56
66 Q_ENUM(VideoStreamType)
67
68 LinkType type() const final { return LinkConfiguration::TypeMock; }
69 void copyFrom(const LinkConfiguration *source) final;
70 void loadSettings(QSettings &settings, const QString &root) final;
71 void saveSettings(QSettings &settings, const QString &root) const final;
72 QString settingsURL() const final { return QStringLiteral("MockLinkSettings.qml"); }
73 QString settingsTitle() const final { return tr("Mock Link Settings"); }
74
75 int firmware() const { return static_cast<int>(_firmwareType); }
76 void setFirmware(int type) { _firmwareType = static_cast<MAV_AUTOPILOT>(type); emit firmwareChanged(); }
77 int vehicle() const { return static_cast<int>(_vehicleType); }
78 void setVehicle(int type) { _vehicleType = static_cast<MAV_TYPE>(type); emit vehicleChanged(); }
79 bool incrementVehicleId() const { return _incrementVehicleId; }
81 MAV_AUTOPILOT firmwareType() const { return _firmwareType; }
82 void setFirmwareType(MAV_AUTOPILOT firmwareType) { _firmwareType = firmwareType; emit firmwareChanged(); }
83 uint16_t boardVendorId() const { return _boardVendorId; }
84 uint16_t boardProductId() const { return _boardProductId; }
85 void setBoardVendorProduct(uint16_t vendorId, uint16_t productId) { _boardVendorId = vendorId; _boardProductId = productId; }
86 MAV_TYPE vehicleType() const { return _vehicleType; }
87 void setVehicleType(MAV_TYPE vehicleType) { _vehicleType = vehicleType; emit vehicleChanged(); }
88 bool sendStatusText() const { return _sendStatusText; }
89 void setSendStatusText(bool sendStatusText) { _sendStatusText = sendStatusText; emit sendStatusChanged(); }
90 bool apmStartFreshParams() const { return _apmStartFreshParams; }
92 bool enableCamera() const { return _enableCamera; }
93 void setEnableCamera(bool enableCamera) { _enableCamera = enableCamera; emit enableCameraChanged(); }
94 bool enableGimbal() const { return _enableGimbal; }
95 void setEnableGimbal(bool enableGimbal) { _enableGimbal = enableGimbal; emit enableGimbalChanged(); }
96 bool enableProximity() const { return _enableProximity; }
98
99 bool gimbalHasRollAxis() const { return _gimbalHasRollAxis; }
100 void setGimbalHasRollAxis(bool value) { _gimbalHasRollAxis = value; emit gimbalHasRollAxisChanged(); }
101 bool gimbalHasPitchAxis() const { return _gimbalHasPitchAxis; }
102 void setGimbalHasPitchAxis(bool value) { _gimbalHasPitchAxis = value; emit gimbalHasPitchAxisChanged(); }
103 bool gimbalHasYawAxis() const { return _gimbalHasYawAxis; }
104 void setGimbalHasYawAxis(bool value) { _gimbalHasYawAxis = value; emit gimbalHasYawAxisChanged(); }
105 bool gimbalHasYawFollow() const { return _gimbalHasYawFollow; }
106 void setGimbalHasYawFollow(bool value) { _gimbalHasYawFollow = value; emit gimbalHasYawFollowChanged(); }
107 bool gimbalHasYawLock() const { return _gimbalHasYawLock; }
108 void setGimbalHasYawLock(bool value) { _gimbalHasYawLock = value; emit gimbalHasYawLockChanged(); }
109 bool gimbalHasRetract() const { return _gimbalHasRetract; }
110 void setGimbalHasRetract(bool value) { _gimbalHasRetract = value; emit gimbalHasRetractChanged(); }
111 bool gimbalHasNeutral() const { return _gimbalHasNeutral; }
112 void setGimbalHasNeutral(bool value) { _gimbalHasNeutral = value; emit gimbalHasNeutralChanged(); }
113
114 bool cameraCaptureVideo() const { return _cameraCaptureVideo; }
115 void setCameraCaptureVideo(bool value) { _cameraCaptureVideo = value; emit cameraCaptureVideoChanged(); }
116 bool cameraCaptureImage() const { return _cameraCaptureImage; }
117 void setCameraCaptureImage(bool value) { _cameraCaptureImage = value; emit cameraCaptureImageChanged(); }
118 bool cameraHasModes() const { return _cameraHasModes; }
119 void setCameraHasModes(bool value) { _cameraHasModes = value; emit cameraHasModesChanged(); }
120 bool cameraHasVideoStream() const { return _cameraHasVideoStream; }
121 void setCameraHasVideoStream(bool value) { _cameraHasVideoStream = value; emit cameraHasVideoStreamChanged(); }
122 bool cameraCanCaptureImageInVideoMode() const { return _cameraCanCaptureImageInVideoMode; }
123 void setCameraCanCaptureImageInVideoMode(bool value) { _cameraCanCaptureImageInVideoMode = value; emit cameraCanCaptureImageInVideoModeChanged(); }
124 bool cameraCanCaptureVideoInImageMode() const { return _cameraCanCaptureVideoInImageMode; }
125 void setCameraCanCaptureVideoInImageMode(bool value) { _cameraCanCaptureVideoInImageMode = value; emit cameraCanCaptureVideoInImageModeChanged(); }
126 bool cameraHasBasicZoom() const { return _cameraHasBasicZoom; }
127 void setCameraHasBasicZoom(bool value) { _cameraHasBasicZoom = value; emit cameraHasBasicZoomChanged(); }
128 bool cameraHasTrackingPoint() const { return _cameraHasTrackingPoint; }
129 void setCameraHasTrackingPoint(bool value) { _cameraHasTrackingPoint = value; emit cameraHasTrackingPointChanged(); }
130 bool cameraHasTrackingRectangle() const { return _cameraHasTrackingRectangle; }
131 void setCameraHasTrackingRectangle(bool value) { _cameraHasTrackingRectangle = value; emit cameraHasTrackingRectangleChanged(); }
132
133 int videoStreamType() const { return static_cast<int>(_videoStreamType); }
134 void setVideoStreamType(int value) { _videoStreamType = videoStreamTypeFromInt(value); emit videoStreamTypeChanged(); }
135 VideoStreamType videoStreamTypeEnum() const { return _videoStreamType; }
136
140 {
141 return ((value >= VideoStreamNone) && (value <= VideoStreamMpegTsTcp)) ? static_cast<VideoStreamType>(value) : VideoStreamNone;
142 }
143
152 FailureMode_t failureMode() const { return _failureMode; }
154
155 // Test-only: not persisted via loadSettings/saveSettings
156 bool startArmed() const { return _startArmed; }
157 void setStartArmed(bool armed) { _startArmed = armed; }
158
159 // Test-only: when true, the simulated vehicle starts with a simple
160 // multirotor mission (takeoff, waypoint, RTL) already loaded. Not persisted.
161 bool preloadMission() const { return _preloadMission; }
162 void setPreloadMission(bool preloadMission) { _preloadMission = preloadMission; }
163
164 // Test-only: when true, outgoing traffic never upgrades from MAVLink v1 to v2,
165 // simulating a vehicle which only supports MAVLink v1. Not persisted.
166 bool stayMavlinkV1() const { return _stayMavlinkV1; }
167 void setStayMavlinkV1(bool stayV1) { _stayMavlinkV1 = stayV1; }
168
169 // Test-only: when true, the vehicle advertises MAV_PROTOCOL_CAPABILITY_FTP
170 // in AUTOPILOT_VERSION. Not persisted.
171 bool ftpCapability() const { return _ftpCapability; }
172 void setFtpCapability(bool ftpCapability) { _ftpCapability = ftpCapability; }
173
174signals:
200
201private:
202 MAV_AUTOPILOT _firmwareType = MAV_AUTOPILOT_PX4;
203 MAV_TYPE _vehicleType = MAV_TYPE_QUADROTOR;
204 bool _sendStatusText = false;
205 bool _apmStartFreshParams = false;
206 bool _enableCamera = false;
207 bool _enableGimbal = false;
208 bool _enableProximity = false;
209 FailureMode_t _failureMode = FailNone;
210 bool _incrementVehicleId = true;
211 uint16_t _boardVendorId = 0;
212 uint16_t _boardProductId = 0;
213 bool _startArmed = false;
214 bool _preloadMission = false;
215 bool _stayMavlinkV1 = false;
216 bool _ftpCapability = false;
217
218 // Camera capability flags (defaults match current Camera 1 configuration)
219 bool _cameraCaptureVideo = true;
220 bool _cameraCaptureImage = true;
221 bool _cameraHasModes = true;
222 bool _cameraHasVideoStream = true;
223 bool _cameraCanCaptureImageInVideoMode = true;
224 bool _cameraCanCaptureVideoInImageMode = false;
225 bool _cameraHasBasicZoom = true;
226 bool _cameraHasTrackingPoint = true;
227 bool _cameraHasTrackingRectangle = true;
228 VideoStreamType _videoStreamType = VideoStreamNone;
229
230 // Gimbal capability flags (defaults - all enabled)
231 bool _gimbalHasRollAxis = true;
232 bool _gimbalHasPitchAxis = true;
233 bool _gimbalHasYawAxis = true;
234 bool _gimbalHasYawFollow = true;
235 bool _gimbalHasYawLock = true;
236 bool _gimbalHasRetract = true;
237 bool _gimbalHasNeutral = true;
238
239 static constexpr const char *_firmwareTypeKey = "FirmwareType";
240 static constexpr const char *_vehicleTypeKey = "VehicleType";
241 static constexpr const char *_sendStatusTextKey = "SendStatusText";
242 static constexpr const char *_apmStartFreshParamsKey = "APMStartFreshParams";
243 static constexpr const char *_enableCameraKey = "EnableCamera";
244 static constexpr const char *_enableGimbalKey = "EnableGimbal";
245 static constexpr const char *_enableProximityKey = "EnableProximity";
246 static constexpr const char *_gimbalHasRollAxisKey = "GimbalHasRollAxis";
247 static constexpr const char *_gimbalHasPitchAxisKey = "GimbalHasPitchAxis";
248 static constexpr const char *_gimbalHasYawAxisKey = "GimbalHasYawAxis";
249 static constexpr const char *_gimbalHasYawFollowKey = "GimbalHasYawFollow";
250 static constexpr const char *_gimbalHasYawLockKey = "GimbalHasYawLock";
251 static constexpr const char *_gimbalHasRetractKey = "GimbalHasRetract";
252 static constexpr const char *_gimbalHasNeutralKey = "GimbalHasNeutral";
253 static constexpr const char *_incrementVehicleIdKey = "IncrementVehicleId";
254 static constexpr const char *_failureModeKey = "FailureMode";
255 static constexpr const char *_cameraCaptureVideoKey = "CameraCaptureVideo";
256 static constexpr const char *_cameraCaptureImageKey = "CameraCaptureImage";
257 static constexpr const char *_cameraHasModesKey = "CameraHasModes";
258 static constexpr const char *_cameraHasVideoStreamKey = "CameraHasVideoStream";
259 static constexpr const char *_cameraCanCaptureImageInVideoModeKey = "CameraCanCaptureImageInVideoMode";
260 static constexpr const char *_cameraCanCaptureVideoInImageModeKey = "CameraCanCaptureVideoInImageMode";
261 static constexpr const char *_cameraHasBasicZoomKey = "CameraHasBasicZoom";
262 static constexpr const char *_cameraHasTrackingPointKey = "CameraHasTrackingPoint";
263 static constexpr const char *_cameraHasTrackingRectangleKey = "CameraHasTrackingRectangle";
264 static constexpr const char *_videoStreamTypeKey = "VideoStreamType";
265};
266
267Q_DECLARE_OPERATORS_FOR_FLAGS(MockConfiguration::Options)
Interface holding link specific settings.
QString name() const
void gimbalHasPitchAxisChanged()
void cameraCanCaptureVideoInImageModeChanged()
bool cameraHasTrackingRectangle() const
bool preloadMission() const
void cameraHasTrackingPointChanged()
uint16_t boardVendorId() const
bool gimbalHasYawAxis() const
int videoStreamType() const
void cameraHasBasicZoomChanged()
bool enableGimbal() const
void setCameraHasTrackingRectangle(bool value)
bool gimbalHasRollAxis() const
void setGimbalHasRollAxis(bool value)
void setCameraHasBasicZoom(bool value)
void apmStartFreshParamsChanged()
@ VideoStreamRtpUdpH265
RTP/UDP H.265 -> udp265://.
@ VideoStreamNone
No stream served.
@ VideoStreamRtpUdpH264
RTP/UDP H.264 -> udp://.
@ VideoStreamRtspH264
RTSP H.264 -> rtsp://.
@ VideoStreamMpegTsTcp
MPEG-TS over TCP -> tcp://.
@ VideoStreamMpegTsUdp
MPEG-TS over UDP -> mpegts://.
void setCameraCaptureVideo(bool value)
bool cameraCanCaptureImageInVideoMode() const
bool gimbalHasRetract() const
void enableProximityChanged()
void enableCameraChanged()
void setVehicleType(MAV_TYPE vehicleType)
QString settingsURL() const final
Settings URL, Pure virtual method providing the URL for the (QML) settings dialog.
@ FailInitialConnectRequestMessageAutopilotVersionLost
REQUEST_MESSAGE:AUTOPILOT_VERSION success, AUTOPILOT_VERSION never sent.
@ FailMissingParamOnInitialRequest
Not all params are sent on initial request, should still succeed since QGC will re-query missing para...
@ FailMissingParamOnAllRequests
Not all params are sent on initial request, QGC retries will fail as well.
@ FailInitialConnectRequestMessageAutopilotVersionFailure
REQUEST_MESSAGE:AUTOPILOT_VERSION returns failure.
@ FailParamNoResponseToRequestList
Do not respond to PARAM_REQUEST_LIST.
void setFailureMode(FailureMode_t failureMode)
void setCameraCanCaptureImageInVideoMode(bool value)
void cameraCaptureImageChanged()
VideoStreamType videoStreamTypeEnum() const
void cameraHasModesChanged()
void loadSettings(QSettings &settings, const QString &root) final
void setCameraCaptureImage(bool value)
void gimbalHasRetractChanged()
void setEnableProximity(bool enableProximity)
bool enableCamera() const
bool apmStartFreshParams() const
bool stayMavlinkV1() const
void setBoardVendorProduct(uint16_t vendorId, uint16_t productId)
bool cameraCaptureVideo() const
QString settingsTitle() const final
Settings Title, Pure virtual method providing the Title for the (QML) settings dialog.
bool sendStatusText() const
bool cameraHasBasicZoom() const
void copyFrom(const LinkConfiguration *source) final
bool gimbalHasPitchAxis() const
uint16_t boardProductId() const
void setStartArmed(bool armed)
void sendStatusChanged()
void videoStreamTypeChanged()
void setApmStartFreshParams(bool apmStartFreshParams)
bool cameraCaptureImage() const
void setCameraHasVideoStream(bool value)
void setIncrementVehicleId(bool incrementVehicleId)
void setEnableCamera(bool enableCamera)
void setGimbalHasPitchAxis(bool value)
void setFirmware(int type)
void setCameraCanCaptureVideoInImageMode(bool value)
static VideoStreamType videoStreamTypeFromInt(int value)
void setEnableGimbal(bool enableGimbal)
void setSendStatusText(bool sendStatusText)
void setGimbalHasYawLock(bool value)
void setGimbalHasYawAxis(bool value)
void setGimbalHasNeutral(bool value)
void cameraCanCaptureImageInVideoModeChanged()
void saveSettings(QSettings &settings, const QString &root) const final
void cameraCaptureVideoChanged()
void cameraHasVideoStreamChanged()
bool ftpCapability() const
void setCameraHasTrackingPoint(bool value)
void gimbalHasYawLockChanged()
void enableGimbalChanged()
bool incrementVehicleId() const
bool gimbalHasYawFollow() const
bool cameraHasVideoStream() const
void setFtpCapability(bool ftpCapability)
LinkType type() const final
void setCameraHasModes(bool value)
bool gimbalHasYawLock() const
void setGimbalHasYawFollow(bool value)
void gimbalHasNeutralChanged()
void gimbalHasRollAxisChanged()
bool cameraHasTrackingPoint() const
bool gimbalHasNeutral() const
void incrementVehicleIdChanged()
void setFirmwareType(MAV_AUTOPILOT firmwareType)
FailureMode_t failureMode() const
void setGimbalHasRetract(bool value)
void gimbalHasYawFollowChanged()
Option
Options for the MockLink::start*MockLink helpers.
bool enableProximity() const
bool cameraHasModes() const
void cameraHasTrackingRectangleChanged()
MAV_TYPE vehicleType() const
void gimbalHasYawAxisChanged()
MAV_AUTOPILOT firmwareType() const
bool cameraCanCaptureVideoInImageMode() const
void setVideoStreamType(int value)
void setVehicle(int type)
void setPreloadMission(bool preloadMission)
void setStayMavlinkV1(bool stayV1)