Browse Source

🎨 Standard 'cooldown' method

Scott Lahteine 2 years ago
parent
commit
70e31bff45

+ 1
- 2
Marlin/src/gcode/control/M80_M81.cpp View File

@@ -74,13 +74,12 @@
74 74
  *      This code should ALWAYS be available for FULL SHUTDOWN!
75 75
  */
76 76
 void GcodeSuite::M81() {
77
-  thermalManager.disable_all_heaters();
78 77
   planner.finish_and_disable();
78
+  thermalManager.cooldown();
79 79
 
80 80
   print_job_timer.stop();
81 81
 
82 82
   #if HAS_FAN
83
-    thermalManager.zero_fan_speeds();
84 83
     #if ENABLED(PROBING_FANS_OFF)
85 84
       thermalManager.fans_paused = false;
86 85
       ZERO(thermalManager.saved_fan_speed);

+ 4
- 6
Marlin/src/lcd/e3v2/creality/dwin.cpp View File

@@ -2735,6 +2735,7 @@ void HMI_Prepare() {
2735 2735
         queue.inject_P(G28_STR); // G28 will set home_flag
2736 2736
         Popup_Window_Home();
2737 2737
         break;
2738
+
2738 2739
       #if HAS_ZOFFSET_ITEM
2739 2740
         case PREPARE_CASE_ZOFF:
2740 2741
           #if EITHER(HAS_BED_PROBE, BABYSTEPPING)
@@ -2750,6 +2751,7 @@ void HMI_Prepare() {
2750 2751
           #endif
2751 2752
           break;
2752 2753
       #endif
2754
+
2753 2755
       #if HAS_PREHEAT
2754 2756
         case PREPARE_CASE_PLA: ui.preheat_all(0); break;
2755 2757
         #if PREHEAT_COUNT > 1
@@ -2758,18 +2760,14 @@ void HMI_Prepare() {
2758 2760
       #endif
2759 2761
 
2760 2762
       #if HAS_HOTEND || HAS_HEATED_BED
2761
-        case PREPARE_CASE_COOL:
2762
-          TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
2763
-          #if HAS_HOTEND || HAS_HEATED_BED
2764
-            thermalManager.disable_all_heaters();
2765
-          #endif
2766
-          break;
2763
+        case PREPARE_CASE_COOL: thermalManager.cooldown(); break;
2767 2764
       #endif
2768 2765
 
2769 2766
       case PREPARE_CASE_LANG:
2770 2767
         HMI_ToggleLanguage();
2771 2768
         Draw_Prepare_Menu();
2772 2769
         break;
2770
+
2773 2771
       default: break;
2774 2772
     }
2775 2773
   }

+ 4
- 9
Marlin/src/lcd/e3v2/enhanced/dwin.cpp View File

@@ -1787,8 +1787,7 @@ void DWIN_Print_Started(const bool sd) {
1787 1787
 // Ended print job
1788 1788
 void DWIN_Print_Finished() {
1789 1789
   if (checkkey == PrintProcess || printingIsActive()) {
1790
-    thermalManager.disable_all_heaters();
1791
-    thermalManager.zero_fan_speeds();
1790
+    thermalManager.cooldown();
1792 1791
     HMI_flag.print_finish = true;
1793 1792
   }
1794 1793
 }
@@ -2116,17 +2115,13 @@ void SetHome() {
2116 2115
 #endif
2117 2116
 
2118 2117
 #if HAS_PREHEAT
2119
-  void SetCoolDown() {
2120
-    TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
2121
-    #if HAS_HOTEND || HAS_HEATED_BED
2122
-      thermalManager.disable_all_heaters();
2123
-    #endif
2124
-  }
2125 2118
   void DoPreheat0() { ui.preheat_all(0); }
2126 2119
   void DoPreheat1() { ui.preheat_all(1); }
2127 2120
   void DoPreheat2() { ui.preheat_all(2); }
2128 2121
 #endif
2129 2122
 
2123
+void DoCoolDown() { thermalManager.cooldown(); }
2124
+
2130 2125
 void SetLanguage() {
2131 2126
   HMI_ToggleLanguage();
2132 2127
   CurrentMenu = nullptr;  // Invalidate menu to full redraw
@@ -3126,8 +3121,8 @@ void Draw_Prepare_Menu() {
3126 3121
       #if PREHEAT_COUNT > 2
3127 3122
         ADDMENUITEM(ICON_CustomPreheat, GET_TEXT_F(MSG_PREHEAT_CUSTOM), onDrawMenuItem, DoPreheat2);
3128 3123
       #endif
3129
-      ADDMENUITEM(ICON_Cool, GET_TEXT_F(MSG_COOLDOWN), onDrawCooldown, SetCoolDown);
3130 3124
     #endif
3125
+    ADDMENUITEM(ICON_Cool, GET_TEXT_F(MSG_COOLDOWN), onDrawCooldown, DoCoolDown);
3131 3126
     ADDMENUITEM(ICON_Language, PSTR("UI Language"), onDrawLanguage, SetLanguage);
3132 3127
   }
3133 3128
   CurrentMenu->draw();

+ 10
- 13
Marlin/src/lcd/e3v2/jyersui/dwin.cpp View File

@@ -1030,7 +1030,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
1030 1030
       #define PREPARE_MANUALLEVEL (PREPARE_HOME + 1)
1031 1031
       #define PREPARE_ZOFFSET (PREPARE_MANUALLEVEL + ENABLED(HAS_ZOFFSET_ITEM))
1032 1032
       #define PREPARE_PREHEAT (PREPARE_ZOFFSET + ENABLED(HAS_PREHEAT))
1033
-      #define PREPARE_COOLDOWN (PREPARE_PREHEAT + ENABLED(HAS_PREHEAT))
1033
+      #define PREPARE_COOLDOWN (PREPARE_PREHEAT + EITHER(HAS_HOTEND, HAS_HEATED_BED))
1034 1034
       #define PREPARE_CHANGEFIL (PREPARE_COOLDOWN + ENABLED(ADVANCED_PAUSE_FEATURE))
1035 1035
       #define PREPARE_TOTAL PREPARE_CHANGEFIL
1036 1036
 
@@ -1096,13 +1096,14 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
1096 1096
             else
1097 1097
               Draw_Menu(Preheat);
1098 1098
             break;
1099
+        #endif
1100
+
1101
+        #if HAS_HOTEND || HAS_HEATED_BED
1099 1102
           case PREPARE_COOLDOWN:
1100 1103
             if (draw)
1101 1104
               Draw_Menu_Item(row, ICON_Cool, F("Cooldown"));
1102
-            else {
1103
-              TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
1104
-              thermalManager.disable_all_heaters();
1105
-            }
1105
+            else
1106
+              thermalManager.cooldown();
1106 1107
             break;
1107 1108
         #endif
1108 1109
 
@@ -1597,8 +1598,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/
1597 1598
         #define PREHEAT_TOTAL PREHEAT_5
1598 1599
 
1599 1600
         auto do_preheat = [](const uint8_t m) {
1600
-          thermalManager.disable_all_heaters();
1601
-          TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
1601
+          thermalManager.cooldown();
1602 1602
           if (preheatmode == 0 || preheatmode == 1) { ui.preheat_hotend_and_fan(m); }
1603 1603
           if (preheatmode == 0 || preheatmode == 2) ui.preheat_bed(m);
1604 1604
         };
@@ -4496,8 +4496,7 @@ void CrealityDWINClass::Popup_Control() {
4496 4496
               TERN_(HAS_HOTEND, pausetemp = thermalManager.temp_hotend[0].target);
4497 4497
               TERN_(HAS_HEATED_BED, pausebed = thermalManager.temp_bed.target);
4498 4498
               TERN_(HAS_FAN, pausefan = thermalManager.fan_speed[0]);
4499
-              thermalManager.disable_all_heaters();
4500
-              TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
4499
+              thermalManager.cooldown();
4501 4500
             #endif
4502 4501
           }
4503 4502
           else {
@@ -4510,8 +4509,7 @@ void CrealityDWINClass::Popup_Control() {
4510 4509
         if (selection == 0) {
4511 4510
           if (sdprint) {
4512 4511
             ui.abort_print();
4513
-            TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
4514
-            thermalManager.disable_all_heaters();
4512
+            thermalManager.cooldown();
4515 4513
           }
4516 4514
           else {
4517 4515
             TERN_(HOST_ACTION_COMMANDS, hostui.cancel());
@@ -4741,8 +4739,7 @@ void CrealityDWINClass::Start_Print(bool sd) {
4741 4739
 void CrealityDWINClass::Stop_Print() {
4742 4740
   printing = false;
4743 4741
   sdprint = false;
4744
-  TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
4745
-  thermalManager.disable_all_heaters();
4742
+  thermalManager.cooldown();
4746 4743
   TERN_(LCD_SET_PROGRESS_MANUALLY, ui.set_progress(100 * (PROGRESS_SCALE)));
4747 4744
   TERN_(USE_M73_REMAINING_TIME, ui.set_remaining_time(0));
4748 4745
   Draw_Print_confirm();

+ 2
- 5
Marlin/src/lcd/extui/dgus/DGUSScreenHandler.cpp View File

@@ -626,14 +626,11 @@ void DGUSScreenHandler::HandleHeaterControl(DGUS_VP_Variable &var, void *val_ptr
626 626
       default:
627 627
       switch (var.VP) {
628 628
         default: return;
629
-        case VP_E0_BED_PREHEAT: TERN_(HAS_HOTEND, ui.preheat_all(0)); break;
629
+        case VP_E0_BED_PREHEAT: TERN_(HAS_HOTEND,       ui.preheat_all(0)); break;
630 630
         case VP_E1_BED_PREHEAT: TERN_(HAS_MULTI_HOTEND, ui.preheat_all(1)); break;
631 631
       }
632 632
       case 7: break; // Custom preheat
633
-      case 9: // Cool down
634
-        thermalManager.zero_fan_speeds();
635
-        thermalManager.disable_all_heaters();
636
-        break;
633
+      case 9: thermalManager.cooldown(); break; // Cool down
637 634
     }
638 635
 
639 636
     // Go to the preheat screen to show the heating progress

+ 1
- 4
Marlin/src/lcd/extui/ui_api.cpp View File

@@ -1034,10 +1034,7 @@ namespace ExtUI {
1034 1034
 
1035 1035
   void setFeedrate_percent(const_float_t value) { feedrate_percentage = constrain(value, 10, 500); }
1036 1036
 
1037
-  void coolDown() {
1038
-    thermalManager.disable_all_heaters();
1039
-    TERN_(HAS_FAN, thermalManager.zero_fan_speeds());
1040
-  }
1037
+  void coolDown() { thermalManager.cooldown(); }
1041 1038
 
1042 1039
   bool awaitingUserConfirm() {
1043 1040
     return TERN0(HAS_RESUME_CONTINUE, wait_for_user) || getHostKeepaliveIsPaused();

+ 1
- 2
Marlin/src/lcd/menu/menu_temperature.cpp View File

@@ -143,8 +143,7 @@ void Temperature::lcd_preheat(const uint8_t e, const int8_t indh, const int8_t i
143 143
 #if HAS_TEMP_HOTEND || HAS_HEATED_BED
144 144
 
145 145
   void lcd_cooldown() {
146
-    thermalManager.zero_fan_speeds();
147
-    thermalManager.disable_all_heaters();
146
+    thermalManager.cooldown();
148 147
     ui.return_to_status();
149 148
   }
150 149
 

+ 8
- 0
Marlin/src/module/temperature.h View File

@@ -848,6 +848,14 @@ class Temperature {
848 848
      */
849 849
     static void disable_all_heaters();
850 850
 
851
+    /**
852
+     * Cooldown, as from the LCD. Disables all heaters and fans.
853
+     */
854
+    static inline void cooldown() {
855
+      zero_fan_speeds();
856
+      disable_all_heaters();
857
+    }
858
+
851 859
     #if ENABLED(PRINTJOB_TIMER_AUTOSTART)
852 860
       /**
853 861
        * Methods to check if heaters are enabled, indicating an active job

Loading…
Cancel
Save