diff --git a/libraries/SRV_Channel/SRV_Channel.h b/libraries/SRV_Channel/SRV_Channel.h index 8cad861f8d..7994cbbc2b 100644 --- a/libraries/SRV_Channel/SRV_Channel.h +++ b/libraries/SRV_Channel/SRV_Channel.h @@ -538,9 +538,7 @@ public: static bool have_digital_outputs() { return digital_mask != 0; } // Set E - stop - static void set_emergency_stop(bool state) { - emergency_stop = state; - } + static void set_emergency_stop(bool state); // get E - stop static bool get_emergency_stop() { return emergency_stop;} diff --git a/libraries/SRV_Channel/SRV_Channels.cpp b/libraries/SRV_Channel/SRV_Channels.cpp index e0def27a86..76d69948fc 100644 --- a/libraries/SRV_Channel/SRV_Channels.cpp +++ b/libraries/SRV_Channel/SRV_Channels.cpp @@ -21,6 +21,7 @@ #include #include #include "SRV_Channel.h" +#include #if HAL_MAX_CAN_PROTOCOL_DRIVERS #include @@ -602,3 +603,16 @@ bool SRV_Channels::is_GPIO(uint8_t channel) } return false; } + +// Set E - stop +void SRV_Channels::set_emergency_stop(bool state) { +#if HAL_LOGGING_ENABLED + if (state != emergency_stop) { + AP_Logger *logger = AP_Logger::get_singleton(); + if (logger && logger->logging_enabled()) { + logger->Write_Event(state ? LogEvent::MOTORS_EMERGENCY_STOPPED : LogEvent::MOTORS_EMERGENCY_STOP_CLEARED); + } + } +#endif + emergency_stop = state; +}