QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
MockLinkCamera.h
Go to the documentation of this file.
1#pragma once
2
3#include "MAVLinkLib.h"
4
5#include <QtCore/QMutex>
6
7class MockLink;
8
40{
41public:
49
51 struct CameraState {
52 uint8_t compId = MAV_COMP_ID_CAMERA;
53 uint32_t capFlags = 0;
54 uint8_t cameraMode = CAMERA_MODE_IMAGE;
55 bool recording = false;
57 float zoomLevel = 1.0f;
58 float focusLevel = 0.0f;
60 float image_interval = 0.0f;
61 qint64 singleShotStartMs = 0;
64
65 // Tracking state
66 uint8_t trackingMode = CAMERA_TRACKING_MODE_NONE;
67 float trackPointX = 0.0f;
68 float trackPointY = 0.0f;
69 float trackRadius = 0.0f;
70 float trackRecTopX = 0.0f;
71 float trackRecTopY = 0.0f;
72 float trackRecBottomX = 0.0f;
73 float trackRecBottomY = 0.0f;
76 qint64 trackingStartMs = 0;
77 float trackAnchorX = 0.0f;
78 float trackAnchorY = 0.0f;
79 };
80
81 explicit MockLinkCamera(MockLink *mockLink,
82 bool captureVideo = true,
83 bool captureImage = true,
84 bool hasModes = true,
85 bool hasVideoStream = true,
86 bool canCaptureImageInVideoMode = true,
87 bool canCaptureVideoInImageMode = false,
88 bool hasBasicZoom = true,
89 bool hasTrackingPoint = false,
90 bool hasTrackingRectangle = false);
91 ~MockLinkCamera() = default;
92
95
97 void run10HzTasks();
98
102
103private:
106 bool _handleCameraCommand(const mavlink_command_long_t &request, uint8_t targetCompId);
107
110 bool _handleRequestMessage(const mavlink_command_long_t &request, uint8_t targetCompId);
111
112 void _sendCameraInformation(uint8_t compId);
113 void _sendCameraSettings(uint8_t compId);
114 void _sendStorageInformation(uint8_t compId);
115 void _sendCameraCaptureStatus(uint8_t compId);
116 void _sendCameraImageCaptured(uint8_t compId);
117 void _sendVideoStreamInformation(uint8_t compId, uint8_t streamId);
118 void _sendVideoStreamStatus(uint8_t compId, uint8_t streamId);
119 void _sendCameraTrackingImageStatus(uint8_t compId);
120 void _sendCommandAck(uint8_t compId, uint16_t command, uint8_t result, int requestedMsgId = -1);
121
122 CameraState *_findCamera(uint8_t compId);
123 static const char *_imageCaptureStatusToString(uint8_t status);
124
125 static constexpr uint8_t kNumCameras = 2;
126 static constexpr uint8_t kNumStreams = 2;
127 static constexpr uint32_t kStorageTotalMiB = 16384;
128 static constexpr uint32_t kStorageFreeMiB = 8192;
129 static constexpr float kZoomMinPercent = 0.0f;
130 static constexpr float kZoomMaxPercent = 100.0f;
131 static constexpr float kZoomStepPercent = 10.0f;
132
133 MockLink *_mockLink = nullptr;
134 CameraState _cameras[kNumCameras];
139 QMutex _camerasMutex;
140};
struct __mavlink_message mavlink_message_t
struct __mavlink_command_long_t mavlink_command_long_t
Simulates MAVLink Camera Protocol v2 components for MockLink.
void sendCameraHeartbeats()
Send heartbeats for all simulated camera components (call from 1Hz tasks)
bool handleMavlinkMessage(const mavlink_message_t &msg)
void run10HzTasks()
Update camera states (call from 10Hz tasks)
ImageCaptureStatus
Image capture status values.
@ ImageCaptureInProgress
Single image capture in progress.
@ ImageCaptureInterval
Interval capture enabled.
@ ImageCaptureIntervalCapture
Interval capture with capture in progress.
@ ImageCaptureIdle
No capture in progress.
~MockLinkCamera()=default
Per-camera simulated state.
int intervalRemaining
Images left in interval capture (0 = unlimited)
qint64 trackingStatusLastSentMs
Timestamp of last tracking status message.
float trackAnchorX
Original center X of tracked target.
qint64 intervalLastCaptureMs
Timestamp of last interval capture.
float image_interval
Interval between image captures (seconds)
qint64 singleShotStartMs
Timestamp when single-shot capture started (0 = not active)
qint64 trackingStatusIntervalUs
Interval for CAMERA_TRACKING_IMAGE_STATUS (-1 = disabled)
qint64 trackingStartMs
Timestamp when tracking was started (for drift animation)
uint8_t trackingMode
CAMERA_TRACKING_MODE enum.
float trackAnchorY
Original center Y of tracked target.
uint32_t capFlags
CAMERA_CAP_FLAGS.
uint8_t cameraMode
CAMERA_MODE enum.
uint8_t image_status
ImageCaptureStatus enum.