From 22dc8176e080e1c91742d31b8db35b2f28699ba3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Fri, 22 Apr 2022 14:33:37 +0200 Subject: [PATCH] Vehicle: implement append_health_and_arming_messages event type --- src/Vehicle/Vehicle.cc | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index 64a67a7..3602310 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -1575,6 +1575,30 @@ void Vehicle::_handleEvent(uint8_t comp_id, std::unique_ptrgroup() == "default" && severity != -1) { std::string message = event->message(); std::string description = event->description(); + + if (event->type() == "append_health_and_arming_messages" && event->numArguments() > 0) { + uint32_t customMode = event->argumentValue(0).value.val_uint32_t; + const QSharedPointer& eventHandler = _events[comp_id]; + int modeGroup = eventHandler->getModeGroup(customMode); + std::vector checks = eventHandler->healthAndArmingCheckResults().checks(modeGroup); + QList messageChecks; + for (const auto& check : checks) { + if (events::externalLogLevel(check.log_levels) <= events::Log::Warning) { + messageChecks.append(check.message); + } + } + if (!message.empty() && !messageChecks.empty()) { + message += "
"; + } + if (messageChecks.size() == 1) { + message += messageChecks[0]; + } else { + for (const auto& messageCheck : messageChecks) { + message += "- " + messageCheck + "
"; + } + } + } + if (message.size() > 0) { // TODO: handle this properly in the UI (e.g. with an expand button to display the description, clickable URL's + params)... QString msg = QString::fromStdString(message);