diff --git a/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc b/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc index 518996d7df5c95ffaede1592b07e1e03c2750ea2..834ce5977d89c7084849ee37744891e15332489f 100644 --- a/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc +++ b/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc @@ -215,6 +215,8 @@ void ArduSubFirmwarePlugin::_handleNamedValueFloat(mavlink_message_t* message) _infoFactGroup.getFact("lights 2")->setRawValue(value.value * 100); } else if (name == "PilotGain") { _infoFactGroup.getFact("pilot gain")->setRawValue(value.value * 100); + } else if (name == "InputHold") { + _infoFactGroup.getFact("input hold")->setRawValue(value.value); } } @@ -223,6 +225,14 @@ void ArduSubFirmwarePlugin::_handleMavlinkMessage(mavlink_message_t* message) switch (message->msgid) { case (MAVLINK_MSG_ID_NAMED_VALUE_FLOAT): _handleNamedValueFloat(message); + break; + case (MAVLINK_MSG_ID_RANGEFINDER): + { + mavlink_rangefinder_t msg; + mavlink_msg_rangefinder_decode(message, &msg); + _infoFactGroup.getFact("rangefinder distance")->setRawValue(msg.distance); + break; + } } } @@ -236,32 +246,41 @@ QMap* ArduSubFirmwarePlugin::factGroups(void) { return &_nameToFactGroupMap; } -const char* APMSubmarineFactGroup::_camTiltFactName = "camera tilt"; -const char* APMSubmarineFactGroup::_tetherTurnsFactName = "tether turns"; -const char* APMSubmarineFactGroup::_lightsLevel1FactName = "lights 1"; -const char* APMSubmarineFactGroup::_lightsLevel2FactName = "lights 2"; -const char* APMSubmarineFactGroup::_pilotGainFactName = "pilot gain"; +const char* APMSubmarineFactGroup::_camTiltFactName = "camera tilt"; +const char* APMSubmarineFactGroup::_tetherTurnsFactName = "tether turns"; +const char* APMSubmarineFactGroup::_lightsLevel1FactName = "lights 1"; +const char* APMSubmarineFactGroup::_lightsLevel2FactName = "lights 2"; +const char* APMSubmarineFactGroup::_pilotGainFactName = "pilot gain"; +const char* APMSubmarineFactGroup::_inputHoldFactName = "input hold"; +const char* APMSubmarineFactGroup::_rangefinderDistanceFactName = "rangefinder distance"; APMSubmarineFactGroup::APMSubmarineFactGroup(QObject* parent) : FactGroup(300, ":/json/Vehicle/SubmarineFact.json", parent) - , _camTiltFact (0, _camTiltFactName, FactMetaData::valueTypeDouble) - , _tetherTurnsFact (0, _tetherTurnsFactName, FactMetaData::valueTypeDouble) - , _lightsLevel1Fact (0, _lightsLevel1FactName, FactMetaData::valueTypeDouble) - , _lightsLevel2Fact (0, _lightsLevel2FactName, FactMetaData::valueTypeDouble) - , _pilotGainFact (0, _pilotGainFactName, FactMetaData::valueTypeDouble) + , _camTiltFact (0, _camTiltFactName, FactMetaData::valueTypeDouble) + , _tetherTurnsFact (0, _tetherTurnsFactName, FactMetaData::valueTypeDouble) + , _lightsLevel1Fact (0, _lightsLevel1FactName, FactMetaData::valueTypeDouble) + , _lightsLevel2Fact (0, _lightsLevel2FactName, FactMetaData::valueTypeDouble) + , _pilotGainFact (0, _pilotGainFactName, FactMetaData::valueTypeDouble) + , _inputHoldFact (0, _inputHoldFactName, FactMetaData::valueTypeDouble) + , _rangefinderDistanceFact (0, _rangefinderDistanceFactName, FactMetaData::valueTypeDouble) { - _addFact(&_camTiltFact, _camTiltFactName); - _addFact(&_tetherTurnsFact, _tetherTurnsFactName); - _addFact(&_lightsLevel1Fact, _lightsLevel1FactName); - _addFact(&_lightsLevel2Fact, _lightsLevel2FactName); - _addFact(&_pilotGainFact, _pilotGainFactName); + _addFact(&_camTiltFact, _camTiltFactName); + _addFact(&_tetherTurnsFact, _tetherTurnsFactName); + _addFact(&_lightsLevel1Fact, _lightsLevel1FactName); + _addFact(&_lightsLevel2Fact, _lightsLevel2FactName); + _addFact(&_pilotGainFact, _pilotGainFactName); + _addFact(&_inputHoldFact, _inputHoldFactName); + _addFact(&_rangefinderDistanceFact, _rangefinderDistanceFactName); // Start out as not available "--.--" - _camTiltFact.setRawValue (std::numeric_limits::quiet_NaN()); - _tetherTurnsFact.setRawValue (std::numeric_limits::quiet_NaN()); - _lightsLevel1Fact.setRawValue (std::numeric_limits::quiet_NaN()); - _lightsLevel2Fact.setRawValue (std::numeric_limits::quiet_NaN()); - _pilotGainFact.setRawValue (std::numeric_limits::quiet_NaN()); + _camTiltFact.setRawValue (std::numeric_limits::quiet_NaN()); + _tetherTurnsFact.setRawValue (std::numeric_limits::quiet_NaN()); + _lightsLevel1Fact.setRawValue (std::numeric_limits::quiet_NaN()); + _lightsLevel2Fact.setRawValue (std::numeric_limits::quiet_NaN()); + _pilotGainFact.setRawValue (std::numeric_limits::quiet_NaN()); + _inputHoldFact.setRawValue (std::numeric_limits::quiet_NaN()); + _rangefinderDistanceFact.setRawValue (std::numeric_limits::quiet_NaN()); + } QString ArduSubFirmwarePlugin::vehicleImageOpaque(const Vehicle* vehicle) const diff --git a/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.h b/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.h index 7191a640a2ee7a8d6e3acb36c34886391db7a7cc..c03062b99aea085c6d232df29b779b5cf3552b67 100644 --- a/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.h +++ b/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.h @@ -35,23 +35,29 @@ class APMSubmarineFactGroup : public FactGroup public: APMSubmarineFactGroup(QObject* parent = NULL); - Q_PROPERTY(Fact* camTilt READ camTilt CONSTANT) - Q_PROPERTY(Fact* tetherTurns READ tetherTurns CONSTANT) - Q_PROPERTY(Fact* lightsLevel1 READ lightsLevel1 CONSTANT) - Q_PROPERTY(Fact* lightsLevel2 READ lightsLevel2 CONSTANT) - Q_PROPERTY(Fact* pilotGain READ pilotGain CONSTANT) - - Fact* camTilt (void) { return &_camTiltFact; } - Fact* tetherTurns (void) { return &_tetherTurnsFact; } - Fact* lightsLevel1 (void) { return &_lightsLevel1Fact; } - Fact* lightsLevel2 (void) { return &_lightsLevel2Fact; } - Fact* pilotGain (void) { return &_pilotGainFact; } + Q_PROPERTY(Fact* camTilt READ camTilt CONSTANT) + Q_PROPERTY(Fact* tetherTurns READ tetherTurns CONSTANT) + Q_PROPERTY(Fact* lightsLevel1 READ lightsLevel1 CONSTANT) + Q_PROPERTY(Fact* lightsLevel2 READ lightsLevel2 CONSTANT) + Q_PROPERTY(Fact* pilotGain READ pilotGain CONSTANT) + Q_PROPERTY(Fact* inputHold READ inputHold CONSTANT) + Q_PROPERTY(Fact* rangefinderDistance READ rangefinderDistance CONSTANT) + + Fact* camTilt (void) { return &_camTiltFact; } + Fact* tetherTurns (void) { return &_tetherTurnsFact; } + Fact* lightsLevel1 (void) { return &_lightsLevel1Fact; } + Fact* lightsLevel2 (void) { return &_lightsLevel2Fact; } + Fact* pilotGain (void) { return &_pilotGainFact; } + Fact* inputHold (void) { return &_inputHoldFact; } + Fact* rangefinderDistance (void) { return &_rangefinderDistanceFact; } static const char* _camTiltFactName; static const char* _tetherTurnsFactName; static const char* _lightsLevel1FactName; static const char* _lightsLevel2FactName; static const char* _pilotGainFactName; + static const char* _inputHoldFactName; + static const char* _rangefinderDistanceFactName; static const char* _settingsGroup; @@ -61,6 +67,8 @@ private: Fact _lightsLevel1Fact; Fact _lightsLevel2Fact; Fact _pilotGainFact; + Fact _inputHoldFact; + Fact _rangefinderDistanceFact; }; class APMSubMode : public APMCustomMode diff --git a/src/Vehicle/SubmarineFact.json b/src/Vehicle/SubmarineFact.json index a32ae63d0a54a20eaa70c169d9e031672eec4e59..527a14f2a44575f6da98b48d27c263b49ab4c74c 100644 --- a/src/Vehicle/SubmarineFact.json +++ b/src/Vehicle/SubmarineFact.json @@ -28,5 +28,18 @@ "shortDescription": "Pilot Gain", "type": "int16", "units": "%" +}, +{ + "name": "input hold", + "shortDescription": "Input Hold", + "type": "int16", + "enumStrings": "Disabled,Enabled", + "enumValues": "0,1" +}, +{ "name": "rangefinder distance", + "shortDescription": "Rangefinder", + "type": "float", + "decimalPlaces": 2, + "units": "meters" } ]