From 2c61e6ba2802919ec8c2caacc34865335464098f Mon Sep 17 00:00:00 2001
From: InsanityAutomation
 <38436470+InsanityAutomation@users.noreply.github.com>
Date: Thu, 23 Jul 2020 22:27:40 -0400
Subject: [PATCH] Add CONTROLLER_FAN_IGNORE_Z (#18735)

---
 Marlin/Configuration_adv.h                   |  1 +
 Marlin/src/feature/controllerfan.cpp         | 32 ++++++++------------
 Marlin/src/feature/mmu2/mmu2.cpp             |  2 +-
 Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h |  4 +++
 buildroot/tests/mega2560-tests               |  6 ++--
 5 files changed, 23 insertions(+), 22 deletions(-)

diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h
index 0945a6c434..f27e2722cd 100644
--- a/Marlin/Configuration_adv.h
+++ b/Marlin/Configuration_adv.h
@@ -375,6 +375,7 @@
 #if ENABLED(USE_CONTROLLER_FAN)
   //#define CONTROLLER_FAN_PIN -1        // Set a custom pin for the controller fan
   //#define CONTROLLER_FAN_USE_Z_ONLY    // With this option only the Z axis is considered
+  //#define CONTROLLER_FAN_IGNORE_Z      // Ignore Z stepper. Useful when stepper timeout is disabled.
   #define CONTROLLERFAN_SPEED_MIN      0 // (0-255) Minimum speed. (If set below this value the fan is turned off.)
   #define CONTROLLERFAN_SPEED_ACTIVE 255 // (0-255) Active speed, used when any motor is enabled
   #define CONTROLLERFAN_SPEED_IDLE     0 // (0-255) Idle speed, used when motors are disabled
diff --git a/Marlin/src/feature/controllerfan.cpp b/Marlin/src/feature/controllerfan.cpp
index c9a2dad03d..fa5a86b019 100644
--- a/Marlin/src/feature/controllerfan.cpp
+++ b/Marlin/src/feature/controllerfan.cpp
@@ -55,30 +55,24 @@ void ControllerFan::update() {
     #define MOTOR_IS_ON(A,B) (A##_ENABLE_READ() == bool(B##_ENABLE_ON))
     #define _OR_ENABLED_E(N) || MOTOR_IS_ON(E##N,E)
 
-    const bool motor_on = MOTOR_IS_ON(Z,Z)
-      #if HAS_Z2_ENABLE
-        || MOTOR_IS_ON(Z2,Z)
-      #endif
-      #if HAS_Z3_ENABLE
-        || MOTOR_IS_ON(Z3,Z)
-      #endif
-      #if HAS_Z4_ENABLE
-        || MOTOR_IS_ON(Z4,Z)
-      #endif
-      || (DISABLED(CONTROLLER_FAN_USE_Z_ONLY) && (
-          MOTOR_IS_ON(X,X) || MOTOR_IS_ON(Y,Y)
-          #if HAS_X2_ENABLE
-            || MOTOR_IS_ON(X2,X)
-          #endif
-          #if HAS_Y2_ENABLE
-            || MOTOR_IS_ON(Y2,Y)
-          #endif
+    const bool motor_on = (
+      ( DISABLED(CONTROLLER_FAN_IGNORE_Z) &&
+        (    MOTOR_IS_ON(Z,Z)
+          || TERN0(HAS_Z2_ENABLE, MOTOR_IS_ON(Z2,Z))
+          || TERN0(HAS_Z3_ENABLE, MOTOR_IS_ON(Z3,Z))
+          || TERN0(HAS_Z4_ENABLE, MOTOR_IS_ON(Z4,Z))
+        )
+      ) || (
+        DISABLED(CONTROLLER_FAN_USE_Z_ONLY) &&
+        (    MOTOR_IS_ON(X,X) || MOTOR_IS_ON(Y,Y)
+          || TERN0(HAS_X2_ENABLE, MOTOR_IS_ON(X2,X))
+          || TERN0(HAS_Y2_ENABLE, MOTOR_IS_ON(Y2,Y))
           #if E_STEPPERS
             REPEAT(E_STEPPERS, _OR_ENABLED_E)
           #endif
         )
       )
-    ;
+    );
 
     // If any of the drivers or the heated bed are enabled...
     if (motor_on || TERN0(HAS_HEATED_BED, thermalManager.temp_bed.soft_pwm_amount > 0))
diff --git a/Marlin/src/feature/mmu2/mmu2.cpp b/Marlin/src/feature/mmu2/mmu2.cpp
index aeff7918dd..35f2db45a9 100644
--- a/Marlin/src/feature/mmu2/mmu2.cpp
+++ b/Marlin/src/feature/mmu2/mmu2.cpp
@@ -466,7 +466,7 @@ void MMU2::check_version() {
   }
 }
 
-static bool mmu2_not_responding() {
+static void mmu2_not_responding() {
   LCD_MESSAGEPGM(MSG_MMU2_NOT_RESPONDING);
   BUZZ(100, 659);
   BUZZ(200, 698);
diff --git a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h
index 59fd1e54f8..efa9916420 100644
--- a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h
+++ b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h
@@ -197,6 +197,10 @@
   #endif
 #endif
 
+#ifndef CONTROLLER_FAN_PIN
+  #define CONTROLLER_FAN_PIN         EX2_FAN_PIN
+#endif
+
 //
 // Misc. Functions
 //
diff --git a/buildroot/tests/mega2560-tests b/buildroot/tests/mega2560-tests
index 3a969c9cf7..a3920b9468 100755
--- a/buildroot/tests/mega2560-tests
+++ b/buildroot/tests/mega2560-tests
@@ -103,7 +103,8 @@ exec_test $1 $2 "MEGACONTROLLER | Minipanel | M100 | PWM_MOTOR_CURRENT | PRINTCO
 restore_configs
 opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
 opt_set LCD_LANGUAGE el_gr
-opt_enable MIXING_EXTRUDER GRADIENT_MIX GRADIENT_VTOOL CR10_STOCKDISPLAY
+opt_enable MIXING_EXTRUDER GRADIENT_MIX GRADIENT_VTOOL CR10_STOCKDISPLAY \
+           USE_CONTROLLER_FAN CONTROLLER_FAN_EDITABLE CONTROLLER_FAN_IGNORE_Z
 opt_set MIXING_STEPPERS 5
 opt_set LCD_LANGUAGE ru
 exec_test $1 $2 "Azteeg X3 | Mixing Extruder (x5) | Gradient Mix | Greek"
@@ -141,7 +142,8 @@ opt_enable COREYX USE_XMAX_PLUG MIXING_EXTRUDER GRADIENT_MIX \
            FIX_MOUNTED_PROBE AUTO_BED_LEVELING_LINEAR DEBUG_LEVELING_FEATURE FILAMENT_WIDTH_SENSOR \
            Z_SAFE_HOMING SHOW_TEMP_ADC_VALUES HOME_Y_BEFORE_X EMERGENCY_PARSER \
            SD_ABORT_ON_ENDSTOP_HIT HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT ADVANCED_OK M114_DETAIL \
-           VOLUMETRIC_DEFAULT_ON NO_WORKSPACE_OFFSETS EXTRA_FAN_SPEED FWRETRACT
+           VOLUMETRIC_DEFAULT_ON NO_WORKSPACE_OFFSETS EXTRA_FAN_SPEED FWRETRACT \
+           USE_CONTROLLER_FAN CONTROLLER_FAN_EDITABLE CONTROLLER_FAN_USE_Z_ONLY
 opt_set FAN_MIN_PWM 50
 opt_set FAN_KICKSTART_TIME 100
 opt_set XY_FREQUENCY_LIMIT 15
-- 
GitLab