diff --git a/libraries/AP_Logger/AP_Logger.cpp b/libraries/AP_Logger/AP_Logger.cpp index 6f608d70ae..aa12bd40e7 100644 --- a/libraries/AP_Logger/AP_Logger.cpp +++ b/libraries/AP_Logger/AP_Logger.cpp @@ -733,7 +733,25 @@ void AP_Logger::Write(const char *name, const char *labels, const char *units, c va_end(arg_list); } -void AP_Logger::WriteV(const char *name, const char *labels, const char *units, const char *mults, const char *fmt, va_list arg_list) +void AP_Logger::WriteCritical(const char *name, const char *labels, const char *fmt, ...) +{ + va_list arg_list; + + va_start(arg_list, fmt); + WriteV(name, labels, nullptr, nullptr, fmt, arg_list, true); + va_end(arg_list); +} + +void AP_Logger::WriteCritical(const char *name, const char *labels, const char *units, const char *mults, const char *fmt, ...) +{ + va_list arg_list; + + va_start(arg_list, fmt); + WriteV(name, labels, units, mults, fmt, arg_list, true); + va_end(arg_list); +} + +void AP_Logger::WriteV(const char *name, const char *labels, const char *units, const char *mults, const char *fmt, va_list arg_list, bool is_critical) { struct log_write_fmt *f = msg_fmt_for_name(name, labels, units, mults, fmt); if (f == nullptr) { @@ -752,7 +770,7 @@ void AP_Logger::WriteV(const char *name, const char *labels, const char *units, } va_list arg_copy; va_copy(arg_copy, arg_list); - backends[i]->Write(f->msg_type, arg_copy); + backends[i]->Write(f->msg_type, arg_copy, is_critical); va_end(arg_copy); } } diff --git a/libraries/AP_Logger/AP_Logger.h b/libraries/AP_Logger/AP_Logger.h index a621616877..c94b45f35c 100644 --- a/libraries/AP_Logger/AP_Logger.h +++ b/libraries/AP_Logger/AP_Logger.h @@ -276,7 +276,9 @@ public: void Write(const char *name, const char *labels, const char *fmt, ...); void Write(const char *name, const char *labels, const char *units, const char *mults, const char *fmt, ...); - void WriteV(const char *name, const char *labels, const char *units, const char *mults, const char *fmt, va_list arg_list); + void WriteCritical(const char *name, const char *labels, const char *fmt, ...); + void WriteCritical(const char *name, const char *labels, const char *units, const char *mults, const char *fmt, ...); + void WriteV(const char *name, const char *labels, const char *units, const char *mults, const char *fmt, va_list arg_list, bool is_critical=false); // This structure provides information on the internal member data of a PID for logging purposes struct PID_Info {