From 0a236bc13d2366e460dbc2a2a80506f61cd38ba1 Mon Sep 17 00:00:00 2001 From: nkruzan Date: Sat, 28 Aug 2021 11:18:07 -0500 Subject: [PATCH] AP_Vehicle: log internal error and report bitmask to GCS AP_Vehicle.cpp: cast parameter bitmask as (unsigned) per Peter B. rework per Peter B. Co-authored-by: Peter Barker remove unnecessary send_internal_error_statustext function remove Write_InternalError function --- libraries/AP_Logger/AP_Logger.h | 3 +++ libraries/AP_Vehicle/AP_Vehicle.cpp | 6 ++++++ libraries/AP_Vehicle/AP_Vehicle.h | 2 ++ 3 files changed, 11 insertions(+) diff --git a/libraries/AP_Logger/AP_Logger.h b/libraries/AP_Logger/AP_Logger.h index 1251bafef7290..7b28e4ee72698 100644 --- a/libraries/AP_Logger/AP_Logger.h +++ b/libraries/AP_Logger/AP_Logger.h @@ -200,6 +200,7 @@ enum class LogErrorSubsystem : uint8_t { FAILSAFE_LEAK = 27, PILOT_INPUT = 28, FAILSAFE_VIBE = 29, + INTERNAL_ERROR = 30, }; // bizarrely this enumeration has lots of duplicate values, offering @@ -229,6 +230,8 @@ enum class LogErrorCode : uint8_t { FAILED_CIRCLE_INIT = 4, DEST_OUTSIDE_FENCE = 5, RTL_MISSING_RNGFND = 6, + // subsystem specific error codes -- internal_error + INTERNAL_ERRORS_DETECTED = 1, // parachute failed to deploy because of low altitude or landed PARACHUTE_TOO_LOW = 2, diff --git a/libraries/AP_Vehicle/AP_Vehicle.cpp b/libraries/AP_Vehicle/AP_Vehicle.cpp index 28d2224cdcea8..24644c4726dbc 100644 --- a/libraries/AP_Vehicle/AP_Vehicle.cpp +++ b/libraries/AP_Vehicle/AP_Vehicle.cpp @@ -199,6 +199,12 @@ void AP_Vehicle::loop() GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s", banner_msg); } } + const uint32_t new_internal_errors = AP::internalerror().errors(); + if(_last_internal_errors != new_internal_errors) { + AP::logger().Write_Error(LogErrorSubsystem::INTERNAL_ERROR, LogErrorCode::INTERNAL_ERRORS_DETECTED); + gcs().send_text(MAV_SEVERITY_CRITICAL, "Internal Errors %x", (unsigned)new_internal_errors); + _last_internal_errors = new_internal_errors; + } } /* diff --git a/libraries/AP_Vehicle/AP_Vehicle.h b/libraries/AP_Vehicle/AP_Vehicle.h index e87a1cead90ec..155d0356664d9 100644 --- a/libraries/AP_Vehicle/AP_Vehicle.h +++ b/libraries/AP_Vehicle/AP_Vehicle.h @@ -373,6 +373,8 @@ class AP_Vehicle : public AP_HAL::HAL::Callbacks { static AP_Vehicle *_singleton; bool done_safety_init; + + uint32_t _last_internal_errors; // backup of AP_InternalError::internal_errors bitmask }; namespace AP {