65 bool hasRollAxis =
true,
66 bool hasPitchAxis =
true,
67 bool hasYawAxis =
true,
68 bool hasYawFollow =
true,
69 bool hasYawLock =
true,
70 bool hasRetract =
true,
71 bool hasNeutral =
true,
128 bool _handleGimbalManagerConfigure(
const mavlink_command_long_t &request, uint8_t senderSysid, uint8_t senderCompid);
132 void _sendGimbalManagerStatus();
133 void _sendGimbalManagerStatus(uint8_t deviceIdField);
134 void _sendGimbalDeviceAttitudeStatus();
135 void _sendGimbalDeviceAttitudeStatus(uint8_t sourceCompid, uint8_t deviceIdField);
136 void _sendGimbalManagerInformation();
137 void _sendGimbalManagerInformation(uint8_t deviceIdField);
138 void _sendGimbalDeviceInformation();
139 void _sendCommandAck(uint16_t command, uint8_t result, uint8_t sourceCompId);
142 static void _applyControlPair(
float sysidValue,
float compidValue, uint8_t senderSysid, uint8_t senderCompid,
143 uint8_t &targetSysid, uint8_t &targetCompid);
145 static void _applyControlField(
float value, uint8_t senderValue, uint8_t &target);
148 uint8_t _attitudeSourceCompid()
const {
return (_gimbalDeviceId <= 6) ?
static_cast<uint8_t
>(MAV_COMP_ID_AUTOPILOT1) : _gimbalDeviceId; }
149 uint8_t _attitudeDeviceIdField()
const {
return (_gimbalDeviceId <= 6) ? _gimbalDeviceId : 0; }
151 static constexpr int kDefaultIntervalUs = 1000000;
152 static constexpr const char* kVendorName =
"MockVendor";
153 static constexpr const char* kModelName =
"MockGimbal";
156 const uint8_t _gimbalDeviceId = MAV_COMP_ID_GIMBAL;
158 int _ignoreStatusIntervalRequests = 0;
159 QList<int> _statusIntervalRequests;
160 int _managerStatusIntervalUs = 0;
161 int _deviceAttitudeStatusIntervalUs = 0;
162 qint64 _managerStatusLastSentMs = 0;
163 qint64 _deviceAttitudeStatusLastSentMs = 0;
169 bool _manualControl =
false;
170 bool _yawLock =
false;
171 bool _yawInEarthFrame =
false;
173 float _deltaYawDeg = 0.0f;
174 PitchYawCommand _lastPitchYawCommand;
175 SetAttitudeCommand _lastSetAttitudeCommand;
180 mutable QMutex _stateMutex;
183 uint8_t _gimbalManagerSysidPrimary = 0;
184 uint8_t _gimbalManagerCompidPrimary = 0;
185 uint8_t _gimbalManagerSysidSecondary = 0;
186 uint8_t _gimbalManagerCompidSecondary = 0;
189 bool _hasRollAxis =
true;
190 bool _hasPitchAxis =
true;
191 bool _hasYawAxis =
true;
192 bool _hasYawFollow =
true;
193 bool _hasYawLock =
true;
194 bool _hasRetract =
true;
195 bool _hasNeutral =
true;