From c203e90af6e02b3b59295b63981ce6d69b35fbdf Mon Sep 17 00:00:00 2001 From: bdring Date: Fri, 29 Sep 2023 13:25:24 -0500 Subject: [PATCH] Optimize coolant delays Removed M9 delay Delay does not occur if M7 or M8 state does not change --- FluidNC/src/CoolantControl.cpp | 10 +++++++--- FluidNC/src/CoolantControl.h | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/FluidNC/src/CoolantControl.cpp b/FluidNC/src/CoolantControl.cpp index 7daa6d1a1..38583f108 100644 --- a/FluidNC/src/CoolantControl.cpp +++ b/FluidNC/src/CoolantControl.cpp @@ -53,6 +53,8 @@ void CoolantControl::write(CoolantState state) { bool pinState = state.Mist; _mist.synchronousWrite(pinState); } + + _previous_state = state; } // Directly called by coolant_init(), coolant_set_state(), which can be at @@ -68,11 +70,13 @@ void CoolantControl::stop() { // parser program end, and g-code parser CoolantControl::sync(). void CoolantControl::set_state(CoolantState state) { - if (sys.abort) { - return; // Block during abort. + if (sys.abort || (_previous_state.Mist == state.Mist && _previous_state.Flood == state.Flood)) { + return; // Block during abort or if no change } write(state); - delay_msec(_delay_ms, DwellMode::SysSuspend); + + if (state.Mist || state.Flood) // ignore delay on turn off + delay_msec(_delay_ms, DwellMode::SysSuspend); } void CoolantControl::off() { diff --git a/FluidNC/src/CoolantControl.h b/FluidNC/src/CoolantControl.h index 4726e4fb0..c4c368947 100644 --- a/FluidNC/src/CoolantControl.h +++ b/FluidNC/src/CoolantControl.h @@ -13,6 +13,8 @@ class CoolantControl : public Configuration::Configurable { uint32_t _delay_ms = 0; + CoolantState _previous_state = {}; + void write(CoolantState state); public: