Browse Source

fix Vehicle: update _healthAndArmingCheckReport only if it has a valid result

QGC4.4
Beat Küng 3 years ago
parent
commit
f4b3a2c14e
  1. 1
      src/Vehicle/EventHandler.cc
  2. 2
      src/Vehicle/EventHandler.h
  3. 6
      src/Vehicle/Vehicle.cc

1
src/Vehicle/EventHandler.cc

@ -80,6 +80,7 @@ void EventHandler::gotEvent(const mavlink_event_t& event) @@ -80,6 +80,7 @@ void EventHandler::gotEvent(const mavlink_event_t& event)
"name:" << parsed_event->name().c_str() << "msg:" << parsed_event->message().c_str();
if (_healthAndArmingChecks.handleEvent(*parsed_event)) {
_healthAndArmingChecksValid = true;
emit healthAndArmingChecksUpdated();
}
_handleEventCB(std::move(parsed_event));

2
src/Vehicle/EventHandler.h

@ -38,6 +38,7 @@ public: @@ -38,6 +38,7 @@ public:
void setMetadata(const QString& metadataJsonFileName);
const events::HealthAndArmingChecks::Results& healthAndArmingCheckResults() const { return _healthAndArmingChecks.results(); }
bool healthAndArmingCheckResultsValid() const { return _healthAndArmingChecksValid; }
int getModeGroup(int32_t customMode);
@ -56,6 +57,7 @@ private: @@ -56,6 +57,7 @@ private:
QTimer _timer;
events::parser::Parser _parser;
events::HealthAndArmingChecks _healthAndArmingChecks;
bool _healthAndArmingChecksValid{false};
QVector<mavlink_event_t> _pendingEvents; ///< stores incoming events until we have the metadata loaded
handle_event_f _handleEventCB;
send_request_event_message_f _sendRequestCB;

6
src/Vehicle/Vehicle.cc

@ -1655,8 +1655,10 @@ EventHandler& Vehicle::_eventHandler(uint8_t compid) @@ -1655,8 +1655,10 @@ EventHandler& Vehicle::_eventHandler(uint8_t compid)
});
connect(this, &Vehicle::flightModeChanged, this, [compid, this]() {
const QSharedPointer<EventHandler>& eventHandler = _events[compid];
_healthAndArmingCheckReport.update(compid, eventHandler->healthAndArmingCheckResults(),
eventHandler->getModeGroup(_custom_mode));
if (eventHandler->healthAndArmingCheckResultsValid()) {
_healthAndArmingCheckReport.update(compid, eventHandler->healthAndArmingCheckResults(),
eventHandler->getModeGroup(_custom_mode));
}
});
}
return *eventData->data();

Loading…
Cancel
Save