QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
SimulatedCameraControl.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QElapsedTimer>
4#include <QtCore/QTimer>
5
7
9class Vehicle;
10
18{
19 Q_OBJECT
20
21public:
22 explicit SimulatedCameraControl(Vehicle *vehicle, QObject *parent = nullptr);
23 ~SimulatedCameraControl() override;
24
25 void setCameraModeVideo() override;
26 void setCameraModePhoto() override;
27 void toggleCameraMode() override;
28 bool takePhoto() override;
29 bool startVideoRecording() override;
30 bool stopVideoRecording() override;
31 bool toggleVideoRecording() override;
32 void resetSettings() override {}
33 void formatCard(int id = 1) override { Q_UNUSED(id);}
34 void stepZoom(int /*direction*/) override {}
35 void startZoom(int /*direction*/) override {}
36 void stopZoom() override {}
37 void stepFocus(int /*direction*/) override {}
38 void startFocus(int /*direction*/) override {}
39 void stopFocus() override {}
40 void stopStream() override {}
41 bool stopTakePhoto() override { return false;}
42 void resumeStream() override {}
43 void startTrackingRect(QRectF /*rec*/) override {}
44 void startTrackingPoint(QPointF /*point*/, double /*radius*/) override {}
45 void stopTracking() override {}
46
47 int version() const override { return 0; }
48 QString modelName() const override { return QStringLiteral("Simulated Camera"); }
49 QString vendor() const override { return QStringLiteral("QGroundControl"); }
50 QString firmwareVersion() const override { return QStringLiteral("1.0"); }
51 qreal focalLength() const override { return qQNaN(); }
52 QSizeF sensorSize() const override { return QSizeF(qQNaN(), qQNaN()); }
53 QSize resolution() const override { return QSize(0, 0); }
54 bool capturesVideo() const override;
55 bool capturesPhotos() const override;
56 bool hasModes() const override;
57 bool hasZoom() const override { return false; }
58 bool hasFocus() const override { return false; }
59 bool hasTracking() const override { return false; }
60 bool supportsTrackingPoint() const override { return false; }
61 bool supportsTrackingRect() const override { return false; }
62 bool hasVideoStream() const override;
63 bool photosInVideoMode() const override { return true; }
64 bool videoInPhotoMode() const override { return false; }
65 CaptureVideoState captureVideoState() const override;
67
68 int compID() const override { return 0; }
69 bool isBasic() const override { return true; }
71 QStringList activeSettings() const override { return QStringList(); }
72 quint32 storageFree() const override { return 0; }
73 QString storageFreeStr() const override { return QString(); }
74 quint32 storageTotal() const override { return 0; }
75 int batteryRemaining() const override { return -1;}
76 QString batteryRemainingStr() const override { return QString(); }
77 bool paramComplete() const override { return true; }
78 qreal zoomLevel() const override { return 1.0; }
79 qreal focusLevel() const override { return 1.0; }
80
81 QmlObjectListModel *streams() override { return nullptr; }
82 QGCVideoStreamInfo *currentStreamInstance() override { return nullptr; }
83 QGCVideoStreamInfo *thermalStreamInstance() override { return nullptr; }
84 int currentStream() const override { return 0; }
85 void setCurrentStream(int /*stream*/) override {}
86 bool autoStream() const override { return false; }
87 quint32 recordTime() const override;
88 QString recordTimeStr() const override;
89
90 Fact *exposureMode() override { return nullptr; }
91 Fact *ev() override { return nullptr; }
92 Fact *iso() override { return nullptr; }
93 Fact *shutterSpeed() override { return nullptr; }
94 Fact *aperture() override { return nullptr; }
95 Fact *wb() override { return nullptr; }
96 Fact *mode() override { return nullptr; }
97
98 QStringList streamLabels() const override { return QStringList(); }
99
100 ThermalViewMode thermalMode() const override { return THERMAL_OFF; }
101 void setThermalMode(ThermalViewMode /*mode*/) override {}
102 double thermalOpacity() const override { return 0.0; }
103 void setThermalOpacity(double /*val*/) override {}
104
105 void setZoomLevel(qreal /*level*/) override {}
106 void setFocusLevel(qreal /*level*/) override {}
107 void setCameraMode(CameraMode cameraMode) override;
109 void setPhotoLapse(qreal /*interval*/) override {}
110 void setPhotoLapseCount(int /*count*/) override {}
111
112 bool trackingEnabled() const override { return false; }
113 void setTrackingEnabled(bool /*set*/) override {}
114
115 bool trackingImageIsActive() const override { return false; }
116 bool trackingImageIsPoint() const override { return false; }
117 QRectF trackingImageRect() const override { return QRectF(); }
118 QPointF trackingImagePoint() const override { return QPointF(); }
119 qreal trackingImageRadius() const override { return 0.0; }
120
121 void factChanged(Fact* /*pFact*/) override {};
122 bool incomingParameter(Fact* /*pFact*/, QVariant& /*newValue*/) override { return false; }
123 bool validateParameter(Fact* /*pFact*/, QVariant& /*newValue*/) override { return false; }
124
125 void handleBatteryStatus(const mavlink_battery_status_t& /*bs*/) override {}
126 void handleCameraCaptureStatus(const mavlink_camera_capture_status_t& /*cameraCaptureStatus*/) override {}
127 void handleParamExtAck(const mavlink_param_ext_ack_t& /*paramExtAck*/) override {}
128 void handleParamExtValue(const mavlink_param_ext_value_t& /*paramExtValue*/) override {}
129 void handleCameraSettings(const mavlink_camera_settings_t& /*settings*/) override {}
130 void handleStorageInformation(const mavlink_storage_information_t& /*storageInformation*/) override {}
131 void handleTrackingImageStatus(const mavlink_camera_tracking_image_status_t& /*trackingImageStatus*/) override {}
132 void handleVideoStreamInformation(const mavlink_video_stream_information_t& /*videoStreamInformation*/) override {}
133 void handleVideoStreamStatus(const mavlink_video_stream_status_t& /*videoStreamStatus*/) override {}
134
135protected slots:
136 void _paramDone() override {};
137
138private:
139 void _setCameraMode(CameraMode mode);
140
141 QElapsedTimer _videoRecordTimeElapsedTimer;
142};
A Fact is used to hold a single value within the system.
Definition Fact.h:17
Abstract base class for all camera controls: real and simulated.
Encapsulates the contents of a VIDEO_STREAM_INFORMATION message.
Creates a simulated Camera Control which supports:
QRectF trackingImageRect() const override
QGCVideoStreamInfo * thermalStreamInstance() override
QString storageFreeStr() const override
void handleVideoStreamInformation(const mavlink_video_stream_information_t &) override
CapturePhotosState capturePhotosState() const override
QGCVideoStreamInfo * currentStreamInstance() override
qreal focalLength() const override
quint32 storageTotal() const override
void setCameraMode(CameraMode cameraMode) override
qreal focusLevel() const override
bool capturesPhotos() const override
CaptureVideoState captureVideoState() const override
bool validateParameter(Fact *, QVariant &) override
Allow controller to modify or invalidate parameter change.
void handleVideoStreamStatus(const mavlink_video_stream_status_t &) override
void setZoomLevel(qreal) override
QmlObjectListModel * streams() override
QString batteryRemainingStr() const override
void handleParamExtAck(const mavlink_param_ext_ack_t &) override
void setPhotoCaptureMode(PhotoCaptureMode mode) override
bool hasFocus() const override
QPointF trackingImagePoint() const override
void startTrackingRect(QRectF) override
qreal zoomLevel() const override
bool paramComplete() const override
void factChanged(Fact *) override
Notify controller a parameter has changed.
QString recordTimeStr() const override
void formatCard(int id=1) override
bool photosInVideoMode() const override
ThermalViewMode thermalMode() const override
quint32 storageFree() const override
void setTrackingEnabled(bool) override
void setPhotoLapse(qreal) override
QSizeF sensorSize() const override
void setThermalOpacity(double) override
QString modelName() const override
void handleBatteryStatus(const mavlink_battery_status_t &) override
void startTrackingPoint(QPointF, double) override
bool trackingEnabled() const override
QSize resolution() const override
QStringList streamLabels() const override
Stream names to show the user (for selection)
bool autoStream() const override
int currentStream() const override
QString firmwareVersion() const override
int compID() const override
double thermalOpacity() const override
QStringList activeSettings() const override
bool supportsTrackingPoint() const override
void handleParamExtValue(const mavlink_param_ext_value_t &) override
bool videoInPhotoMode() const override
void setCurrentStream(int) override
bool hasVideoStream() const override
qreal trackingImageRadius() const override
void handleStorageInformation(const mavlink_storage_information_t &) override
QString vendor() const override
void handleCameraCaptureStatus(const mavlink_camera_capture_status_t &) override
void setFocusLevel(qreal) override
bool hasZoom() const override
int batteryRemaining() const override
int version() const override
quint32 recordTime() const override
void handleCameraSettings(const mavlink_camera_settings_t &) override
bool trackingImageIsActive() const override
void handleTrackingImageStatus(const mavlink_camera_tracking_image_status_t &) override
void setPhotoLapseCount(int) override
bool incomingParameter(Fact *, QVariant &) override
Allow controller to modify or invalidate incoming parameter.
bool trackingImageIsPoint() const override
bool isBasic() const override
StorageStatus storageStatus() const override
bool capturesVideo() const override
bool hasModes() const override
void setThermalMode(ThermalViewMode) override
bool hasTracking() const override
bool supportsTrackingRect() const override