12 _addFact(&_camTiltFact);
13 _addFact(&_tetherTurnsFact);
14 _addFact(&_lightsLevel1Fact);
15 _addFact(&_lightsLevel2Fact);
16 _addFact(&_pilotGainFact);
17 _addFact(&_inputHoldFact);
18 _addFact(&_rollPitchToggleFact);
19 _addFact(&_rangefinderDistanceFact);
20 _addFact(&_rangefinderTargetFact);
22 _camTiltFact.setRawValue(std::numeric_limits<float>::quiet_NaN());
23 _tetherTurnsFact.setRawValue(std::numeric_limits<float>::quiet_NaN());
24 _lightsLevel1Fact.setRawValue(std::numeric_limits<float>::quiet_NaN());
25 _lightsLevel2Fact.setRawValue(std::numeric_limits<float>::quiet_NaN());
26 _pilotGainFact.setRawValue(std::numeric_limits<float>::quiet_NaN());
27 _inputHoldFact.setRawValue(std::numeric_limits<float>::quiet_NaN());
28 _rollPitchToggleFact.setRawValue(2);
29 _rangefinderDistanceFact.setRawValue(std::numeric_limits<float>::quiet_NaN());
30 _rangefinderTargetFact.setRawValue(std::numeric_limits<float>::quiet_NaN());
33APMSubmarineFactGroup::~APMSubmarineFactGroup()
45 Q_UNUSED(vehicleType);
51 if (_factRenameMap.contains(metaData->
name())) {
69 mode.fixedWing =
false;
70 mode.multiRotor =
true;
90bool ArduSubFirmwarePlugin::_remapParamNameIntialized =
false;
95 , _infoFactGroup(this)
127 if (!_remapParamNameIntialized) {
128 _remapParamNameIntialized =
true;
131 _nameToFactGroupMap.insert(
"apmSubInfo", &_infoFactGroup);
133 _factRenameMap[QStringLiteral(
"altitudeRelative")] = QStringLiteral(
"Depth");
134 _factRenameMap[QStringLiteral(
"flightTime")] = QStringLiteral(
"Dive Time");
135 _factRenameMap[QStringLiteral(
"altitudeAMSL")] = QStringLiteral(
"");
136 _factRenameMap[QStringLiteral(
"hobbs")] = QStringLiteral(
"");
137 _factRenameMap[QStringLiteral(
"airSpeed")] = QStringLiteral(
"");
166 return ((capabilities & available) == capabilities);
171 mavlink_named_value_float_t value{};
172 mavlink_msg_named_value_float_decode(message, &value);
174 const QString name = QString(value.name);
176 if (name ==
"CamTilt") {
177 _infoFactGroup.getFact(
"cameraTilt")->setRawValue(value.value * 100);
178 }
else if (name ==
"TetherTrn") {
179 _infoFactGroup.getFact(
"tetherTurns")->setRawValue(value.value);
180 }
else if (name ==
"Lights1") {
181 _infoFactGroup.getFact(
"lights1")->setRawValue(value.value * 100);
182 }
else if (name ==
"Lights2") {
183 _infoFactGroup.getFact(
"lights2")->setRawValue(value.value * 100);
184 }
else if (name ==
"PilotGain") {
185 _infoFactGroup.getFact(
"pilotGain")->setRawValue(value.value * 100);
186 }
else if (name ==
"InputHold") {
187 _infoFactGroup.getFact(
"inputHold")->setRawValue(value.value);
188 }
else if (name ==
"RollPitch") {
189 _infoFactGroup.getFact(
"rollPitchToggle")->setRawValue(value.value);
190 }
else if (name ==
"RFTarget") {
191 _infoFactGroup.getFact(
"rangefinderTarget")->setRawValue(value.value);
197 switch (message->msgid) {
198 case (MAVLINK_MSG_ID_NAMED_VALUE_FLOAT):
199 _handleNamedValueFloat(message);
201 case (MAVLINK_MSG_ID_RANGEFINDER):
203 mavlink_rangefinder_t msg{};
204 mavlink_msg_rangefinder_decode(message, &msg);
205 _infoFactGroup.getFact(
"rangefinderDistance")->setRawValue(msg.distance);
215 _handleMavlinkMessage(message);
221 return &_nameToFactGroupMap;
QList< FirmwareFlightMode > FlightModeList
struct __mavlink_message mavlink_message_t
#define QGC_LOGGING_CATEGORY(name, categoryStr)
This is the base class for all stack specific APM firmware plugins.
bool adjustIncomingMavlinkMessage(Vehicle *vehicle, mavlink_message_t *message) override
const QString _surfaceFlightMode
void initializeStreamRates(Vehicle *vehicle) override
QMap< QString, FactGroup * > * factGroups() override
Returns a pointer to a dictionary of firmware-specific FactGroups.
const QString _manualFlightMode
const QString _autoFlightMode
uint32_t _convertToCustomFlightModeEnum(uint32_t val) const override
void adjustMetaData(MAV_TYPE vehicleType, FactMetaData *metaData) override
QString stabilizedFlightMode() const override
Returns the flight mode for Stabilized.
int remapParamNameHigestMinorVersionNumber(int majorVersionNumber) const override
Returns the highest major version number that is known to the remap for this specified major version.
const QString _acroFlightMode
ArduSubFirmwarePlugin(QObject *parent=nullptr)
QString vehicleImageOpaque(const Vehicle *) const override
Return the resource file which contains the vehicle icon used in the flight view when the view is dar...
const QString _circleFlightMode
const QString _motorDetectionFlightMode
const QString _stabilizeFlightMode
const QString _guidedFlightMode
QString vehicleImageOutline(const Vehicle *vehicle) const override
Return the resource file which contains the vehicle icon used in the flight view when the view is lig...
bool adjustIncomingMavlinkMessage(Vehicle *vehicle, mavlink_message_t *message) override
bool isCapable(const Vehicle *vehicle, FirmwareCapabilities capabilities) const override
const QString _surftrakFlightMode
QString motorDetectionFlightMode() const override
Returns the flight mode for Motor Detection.
const QString _posHoldFlightMode
void updateAvailableFlightModes(FlightModeList &modeList) override
Update Available flight modes recieved from vehicle.
const QString _altHoldFlightMode
Used to group Facts together into an object hierarachy.
void _setModeEnumToModeStringMapping(FlightModeCustomModeMap enumToString)
FirmwareCapabilities
Set of optional capabilites which firmware may support.
@ GuidedModeCapability
Vehicle supports guided mode commands.
@ SetFlightModeCapability
FirmwarePlugin::setFlightMode method is supported.
@ PauseVehicleCapability
Vehicle supports pausing at current location.
void _updateFlightModeList(FlightModeList &flightModeList)
FlightModeCustomModeMap _modeEnumToString
QMap< int, remapParamNameMinorVersionRemapMap_t > remapParamNameMajorVersionMap_t
static const int versionNotSetValue
void requestDataStream(MAV_DATA_STREAM stream, uint16_t rate, bool sendMultiple=true)