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 <QtPositioning/QGeoCoordinate>
4
5#include "LinkConfiguration.h"
6#include "MAVLinkEnums.h"
7
9{
10 Q_OBJECT
11 Q_PROPERTY(int firmware READ firmware WRITE setFirmware NOTIFY firmwareChanged)
12 Q_PROPERTY(int vehicle READ vehicle WRITE setVehicle NOTIFY vehicleChanged)
13 Q_PROPERTY(bool sendStatus READ sendStatusText WRITE setSendStatusText NOTIFY sendStatusChanged)
15 Q_PROPERTY(bool enableCamera READ enableCamera WRITE setEnableCamera NOTIFY enableCameraChanged)
16 Q_PROPERTY(bool enableGimbal READ enableGimbal WRITE setEnableGimbal NOTIFY enableGimbalChanged)
18 Q_PROPERTY(bool enableADSB READ enableADSB WRITE setEnableADSB NOTIFY enableADSBChanged)
38 Q_PROPERTY(int homeLocation READ homeLocation WRITE setHomeLocation NOTIFY homeLocationChanged)
39
40public:
41 explicit MockConfiguration(const QString &name, QObject *parent = nullptr);
42 explicit MockConfiguration(const MockConfiguration *copy, QObject *parent = nullptr);
44
58 Q_DECLARE_FLAGS(Options, Option)
59 Q_FLAG(Options)
60
61
71 Q_ENUM(VideoStreamType)
72
73
81 Q_ENUM(HomeLocation)
82
83 LinkType type() const final { return LinkConfiguration::TypeMock; }
84 void copyFrom(const LinkConfiguration *source) final;
85 void loadSettings(QSettings &settings, const QString &root) final;
86 void saveSettings(QSettings &settings, const QString &root) const final;
87 QString settingsURL() const final { return QStringLiteral("MockLinkSettings.qml"); }
88 QString settingsTitle() const final { return tr("Mock Link Settings"); }
89
90 int firmware() const { return static_cast<int>(_firmwareType); }
91 void setFirmware(int type) { _firmwareType = static_cast<MAV_AUTOPILOT>(type); emit firmwareChanged(); }
92 int vehicle() const { return static_cast<int>(_vehicleType); }
93 void setVehicle(int type) { _vehicleType = static_cast<MAV_TYPE>(type); emit vehicleChanged(); }
94 bool incrementVehicleId() const { return _incrementVehicleId; }
96 MAV_AUTOPILOT firmwareType() const { return _firmwareType; }
97 void setFirmwareType(MAV_AUTOPILOT firmwareType) { _firmwareType = firmwareType; emit firmwareChanged(); }
98 uint16_t boardVendorId() const { return _boardVendorId; }
99 uint16_t boardProductId() const { return _boardProductId; }
100 void setBoardVendorProduct(uint16_t vendorId, uint16_t productId) { _boardVendorId = vendorId; _boardProductId = productId; }
101 MAV_TYPE vehicleType() const { return _vehicleType; }
102 void setVehicleType(MAV_TYPE vehicleType) { _vehicleType = vehicleType; emit vehicleChanged(); }
103 bool sendStatusText() const { return _sendStatusText; }
104 void setSendStatusText(bool sendStatusText) { _sendStatusText = sendStatusText; emit sendStatusChanged(); }
105 bool apmStartFreshParams() const { return _apmStartFreshParams; }
107 bool enableCamera() const { return _enableCamera; }
108 void setEnableCamera(bool enableCamera) { _enableCamera = enableCamera; emit enableCameraChanged(); }
109 bool enableGimbal() const { return _enableGimbal; }
110 void setEnableGimbal(bool enableGimbal) { _enableGimbal = enableGimbal; emit enableGimbalChanged(); }
111 bool enableProximity() const { return _enableProximity; }
113
114 bool enableADSB() const { return _enableADSB; }
115
117 {
118 _enableADSB = enableADSB;
119 emit enableADSBChanged();
120 }
121
122 bool gimbalHasRollAxis() const { return _gimbalHasRollAxis; }
123 void setGimbalHasRollAxis(bool value) { _gimbalHasRollAxis = value; emit gimbalHasRollAxisChanged(); }
124 bool gimbalHasPitchAxis() const { return _gimbalHasPitchAxis; }
125 void setGimbalHasPitchAxis(bool value) { _gimbalHasPitchAxis = value; emit gimbalHasPitchAxisChanged(); }
126 bool gimbalHasYawAxis() const { return _gimbalHasYawAxis; }
127 void setGimbalHasYawAxis(bool value) { _gimbalHasYawAxis = value; emit gimbalHasYawAxisChanged(); }
128 bool gimbalHasYawFollow() const { return _gimbalHasYawFollow; }
129 void setGimbalHasYawFollow(bool value) { _gimbalHasYawFollow = value; emit gimbalHasYawFollowChanged(); }
130 bool gimbalHasYawLock() const { return _gimbalHasYawLock; }
131 void setGimbalHasYawLock(bool value) { _gimbalHasYawLock = value; emit gimbalHasYawLockChanged(); }
132 bool gimbalHasRetract() const { return _gimbalHasRetract; }
133 void setGimbalHasRetract(bool value) { _gimbalHasRetract = value; emit gimbalHasRetractChanged(); }
134 bool gimbalHasNeutral() const { return _gimbalHasNeutral; }
135 void setGimbalHasNeutral(bool value) { _gimbalHasNeutral = value; emit gimbalHasNeutralChanged(); }
137 int gimbalDeviceId() const { return _gimbalDeviceId; }
138 void setGimbalDeviceId(int value) { _gimbalDeviceId = value; emit gimbalDeviceIdChanged(); }
139
140 bool cameraCaptureVideo() const { return _cameraCaptureVideo; }
141 void setCameraCaptureVideo(bool value) { _cameraCaptureVideo = value; emit cameraCaptureVideoChanged(); }
142 bool cameraCaptureImage() const { return _cameraCaptureImage; }
143 void setCameraCaptureImage(bool value) { _cameraCaptureImage = value; emit cameraCaptureImageChanged(); }
144 bool cameraHasModes() const { return _cameraHasModes; }
145 void setCameraHasModes(bool value) { _cameraHasModes = value; emit cameraHasModesChanged(); }
146 bool cameraHasVideoStream() const { return _cameraHasVideoStream; }
147 void setCameraHasVideoStream(bool value) { _cameraHasVideoStream = value; emit cameraHasVideoStreamChanged(); }
148 bool cameraCanCaptureImageInVideoMode() const { return _cameraCanCaptureImageInVideoMode; }
149 void setCameraCanCaptureImageInVideoMode(bool value) { _cameraCanCaptureImageInVideoMode = value; emit cameraCanCaptureImageInVideoModeChanged(); }
150 bool cameraCanCaptureVideoInImageMode() const { return _cameraCanCaptureVideoInImageMode; }
151 void setCameraCanCaptureVideoInImageMode(bool value) { _cameraCanCaptureVideoInImageMode = value; emit cameraCanCaptureVideoInImageModeChanged(); }
152 bool cameraHasBasicZoom() const { return _cameraHasBasicZoom; }
153 void setCameraHasBasicZoom(bool value) { _cameraHasBasicZoom = value; emit cameraHasBasicZoomChanged(); }
154 bool cameraHasTrackingPoint() const { return _cameraHasTrackingPoint; }
155 void setCameraHasTrackingPoint(bool value) { _cameraHasTrackingPoint = value; emit cameraHasTrackingPointChanged(); }
156 bool cameraHasTrackingRectangle() const { return _cameraHasTrackingRectangle; }
157 void setCameraHasTrackingRectangle(bool value) { _cameraHasTrackingRectangle = value; emit cameraHasTrackingRectangleChanged(); }
158
159 int videoStreamType() const { return static_cast<int>(_videoStreamType); }
160 void setVideoStreamType(int value) { _videoStreamType = videoStreamTypeFromInt(value); emit videoStreamTypeChanged(); }
161 VideoStreamType videoStreamTypeEnum() const { return _videoStreamType; }
162
166 {
167 return ((value >= VideoStreamNone) && (value <= VideoStreamMpegTsTcp)) ? static_cast<VideoStreamType>(value) : VideoStreamNone;
168 }
169
170 int homeLocation() const { return static_cast<int>(_homeLocation); }
171
172 void setHomeLocation(int value)
173 {
174 _homeLocation = homeLocationFromInt(value);
175 emit homeLocationChanged();
176 }
177
178 HomeLocation homeLocationEnum() const { return _homeLocation; }
179
183 {
184 return ((value >= HomeLocationPX4SITL) && (value <= HomeLocationTerrainTest)) ? static_cast<HomeLocation>(value)
186 }
187
189 static QGeoCoordinate homeCoordinate(HomeLocation location);
190
203 FailureMode_t failureMode() const { return _failureMode; }
205
206 // Test-only: not persisted via loadSettings/saveSettings
207 bool startArmed() const { return _startArmed; }
208 void setStartArmed(bool armed) { _startArmed = armed; }
209
210 // Test-only: when true, the simulated vehicle starts with a simple
211 // multirotor mission (takeoff, waypoint, RTL) already loaded. Not persisted.
212 bool preloadMission() const { return _preloadMission; }
213 void setPreloadMission(bool preloadMission) { _preloadMission = preloadMission; }
214
215 // Test-only: when true, outgoing traffic never upgrades from MAVLink v1 to v2,
216 // simulating a vehicle which only supports MAVLink v1. Not persisted.
217 bool stayMavlinkV1() const { return _stayMavlinkV1; }
218 void setStayMavlinkV1(bool stayV1) { _stayMavlinkV1 = stayV1; }
219
220 // Test-only: when true, the vehicle advertises MAV_PROTOCOL_CAPABILITY_FTP
221 // in AUTOPILOT_VERSION. Not persisted.
222 bool ftpCapability() const { return _ftpCapability; }
223 void setFtpCapability(bool ftpCapability) { _ftpCapability = ftpCapability; }
224
225 // Test-only: when false, RADIO_STATUS is not streamed, so the link is not detected as a radio link. Not persisted.
226 bool sendRadioStatus() const { return _sendRadioStatus; }
227 void setSendRadioStatus(bool sendRadioStatus) { _sendRadioStatus = sendRadioStatus; }
228
229signals:
258
259private:
260 MAV_AUTOPILOT _firmwareType = MAV_AUTOPILOT_PX4;
261 MAV_TYPE _vehicleType = MAV_TYPE_QUADROTOR;
262 bool _sendStatusText = false;
263 bool _apmStartFreshParams = false;
264 bool _enableCamera = false;
265 bool _enableGimbal = false;
266 bool _enableProximity = false;
267 bool _enableADSB = false;
268 FailureMode_t _failureMode = FailNone;
269 bool _incrementVehicleId = true;
270 uint16_t _boardVendorId = 0;
271 uint16_t _boardProductId = 0;
272 bool _startArmed = false;
273 bool _preloadMission = false;
274 bool _stayMavlinkV1 = false;
275 bool _ftpCapability = false;
276 bool _sendRadioStatus = true;
277
278 // Camera capability flags (defaults match current Camera 1 configuration)
279 bool _cameraCaptureVideo = true;
280 bool _cameraCaptureImage = true;
281 bool _cameraHasModes = true;
282 bool _cameraHasVideoStream = true;
283 bool _cameraCanCaptureImageInVideoMode = true;
284 bool _cameraCanCaptureVideoInImageMode = false;
285 bool _cameraHasBasicZoom = true;
286 bool _cameraHasTrackingPoint = true;
287 bool _cameraHasTrackingRectangle = true;
288 VideoStreamType _videoStreamType = VideoStreamNone;
289 HomeLocation _homeLocation = HomeLocationPX4SITL;
290
291 // Gimbal capability flags (defaults - all enabled)
292 bool _gimbalHasRollAxis = true;
293 bool _gimbalHasPitchAxis = true;
294 bool _gimbalHasYawAxis = true;
295 bool _gimbalHasYawFollow = true;
296 bool _gimbalHasYawLock = true;
297 bool _gimbalHasRetract = true;
298 bool _gimbalHasNeutral = true;
299 int _gimbalDeviceId = MAV_COMP_ID_GIMBAL;
300
301 static constexpr const char *_firmwareTypeKey = "FirmwareType";
302 static constexpr const char *_vehicleTypeKey = "VehicleType";
303 static constexpr const char *_sendStatusTextKey = "SendStatusText";
304 static constexpr const char *_apmStartFreshParamsKey = "APMStartFreshParams";
305 static constexpr const char *_enableCameraKey = "EnableCamera";
306 static constexpr const char *_enableGimbalKey = "EnableGimbal";
307 static constexpr const char *_enableProximityKey = "EnableProximity";
308 static constexpr const char* _enableADSBKey = "EnableADSB";
309 static constexpr const char *_gimbalHasRollAxisKey = "GimbalHasRollAxis";
310 static constexpr const char *_gimbalHasPitchAxisKey = "GimbalHasPitchAxis";
311 static constexpr const char *_gimbalHasYawAxisKey = "GimbalHasYawAxis";
312 static constexpr const char *_gimbalHasYawFollowKey = "GimbalHasYawFollow";
313 static constexpr const char *_gimbalHasYawLockKey = "GimbalHasYawLock";
314 static constexpr const char *_gimbalHasRetractKey = "GimbalHasRetract";
315 static constexpr const char *_gimbalHasNeutralKey = "GimbalHasNeutral";
316 static constexpr const char *_gimbalDeviceIdKey = "GimbalDeviceId";
317 static constexpr const char *_incrementVehicleIdKey = "IncrementVehicleId";
318 static constexpr const char *_failureModeKey = "FailureMode";
319 static constexpr const char *_cameraCaptureVideoKey = "CameraCaptureVideo";
320 static constexpr const char *_cameraCaptureImageKey = "CameraCaptureImage";
321 static constexpr const char *_cameraHasModesKey = "CameraHasModes";
322 static constexpr const char *_cameraHasVideoStreamKey = "CameraHasVideoStream";
323 static constexpr const char *_cameraCanCaptureImageInVideoModeKey = "CameraCanCaptureImageInVideoMode";
324 static constexpr const char *_cameraCanCaptureVideoInImageModeKey = "CameraCanCaptureVideoInImageMode";
325 static constexpr const char *_cameraHasBasicZoomKey = "CameraHasBasicZoom";
326 static constexpr const char *_cameraHasTrackingPointKey = "CameraHasTrackingPoint";
327 static constexpr const char *_cameraHasTrackingRectangleKey = "CameraHasTrackingRectangle";
328 static constexpr const char *_videoStreamTypeKey = "VideoStreamType";
329 static constexpr const char* _homeLocationKey = "HomeLocation";
330};
331
332Q_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
@ HomeLocationPX4SITL
PX4 Gazebo SITL default (Zurich), allows mixing with a SITL vehicle.
@ HomeLocationArduPilotSITL
ArduPilot SITL default (CMAC, Canberra)
@ HomeLocationTerrainTest
Location with good terrain elevation variation.
bool gimbalHasRetract() const
HomeLocation homeLocationEnum() const
void enableProximityChanged()
void enableCameraChanged()
void setVehicleType(MAV_TYPE vehicleType)
void setHomeLocation(int value)
QString settingsURL() const final
Settings URL, Pure virtual method providing the URL for the (QML) settings dialog.
@ FailMissingParamOnAllRequestsNonDefaultComponent
Adds a second (non-autopilot) param component which never sends one of its params.
@ 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.
@ FailNonDefaultComponentLossy
Second component streams only its first two params and drops the first read of every param.
@ FailMissingParamSharedIndexAcrossComponents
Autopilot never sends its param at index 1; second component skips its index 1 on initial request onl...
@ FailInitialConnectRequestMessageAutopilotVersionFailure
REQUEST_MESSAGE:AUTOPILOT_VERSION returns failure.
@ FailNonDefaultComponentDead
Second component streams only its first two params and never answers a read.
@ FailParamNoResponseToRequestList
Do not respond to PARAM_REQUEST_LIST.
static HomeLocation homeLocationFromInt(int value)
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()
int gimbalDeviceId() const
Gimbal device id: 1-6 for an autopilot-attached gimbal (messages come from the manager compid),...
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.
void gimbalDeviceIdChanged()
bool sendStatusText() const
bool cameraHasBasicZoom() const
void copyFrom(const LinkConfiguration *source) final
void setEnableADSB(bool enableADSB)
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 setGimbalDeviceId(int 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
bool sendRadioStatus() const
void enableADSBChanged()
void homeLocationChanged()
void incrementVehicleIdChanged()
void setFirmwareType(MAV_AUTOPILOT firmwareType)
FailureMode_t failureMode() const
void setGimbalHasRetract(bool value)
void setSendRadioStatus(bool sendRadioStatus)
void gimbalHasYawFollowChanged()
Option
Options for the MockLink::start*MockLink helpers.
bool enableProximity() const
bool cameraHasModes() const
void cameraHasTrackingRectangleChanged()
static QGeoCoordinate homeCoordinate(HomeLocation location)
Home coordinate, altitude AMSL, for the given location.
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)