Explorar el Código

Add typedef extra_fan_t

Scott Lahteine hace 3 años
padre
commit
f7aaa2e1c7

+ 1
- 1
Marlin/src/lcd/menu/menu_item.h Ver fichero

@@ -473,7 +473,7 @@ class MenuItem_bool : public MenuEditItemBase {
473 473
   #define _FAN_EDIT_ITEMS(F,L) do{ \
474 474
     editable.uint8 = thermalManager.fan_speed[F]; \
475 475
     EDIT_ITEM_FAST_N(percent, F, MSG_##L, &editable.uint8, 0, 255, on_fan_update); \
476
-    EDIT_EXTRA_FAN_SPEED(percent, F, MSG_EXTRA_##L, &thermalManager.new_fan_speed[F], 3, 255); \
476
+    EDIT_EXTRA_FAN_SPEED(percent, F, MSG_EXTRA_##L, &thermalManager.extra_fan_speed[F].speed, 3, 255); \
477 477
   }while(0)
478 478
 
479 479
   #if FAN_COUNT > 1

+ 14
- 7
Marlin/src/module/temperature.cpp Ver fichero

@@ -273,19 +273,26 @@ const char str_t_thermal_runaway[] PROGMEM = STR_T_THERMAL_RUNAWAY,
273 273
   uint8_t Temperature::fan_speed[FAN_COUNT]; // = { 0 }
274 274
 
275 275
   #if ENABLED(EXTRA_FAN_SPEED)
276
-    uint8_t Temperature::old_fan_speed[FAN_COUNT], Temperature::new_fan_speed[FAN_COUNT];
277 276
 
278
-    void Temperature::set_temp_fan_speed(const uint8_t fan, const uint16_t tmp_temp) {
279
-      switch (tmp_temp) {
277
+    Temperature::extra_fan_t Temperature::extra_fan_speed[FAN_COUNT];
278
+
279
+    /**
280
+     * Handle the M106 P<fan> T<speed> command:
281
+     *  T1       = Restore fan speed saved on the last T2
282
+     *  T2       = Save the fan speed, then set to the last T<3-255> value
283
+     *  T<3-255> = Set the "extra fan speed"
284
+     */
285
+    void Temperature::set_temp_fan_speed(const uint8_t fan, const uint16_t command_or_speed) {
286
+      switch (command_or_speed) {
280 287
         case 1:
281
-          set_fan_speed(fan, old_fan_speed[fan]);
288
+          set_fan_speed(fan, extra_fan_speed[fan].saved);
282 289
           break;
283 290
         case 2:
284
-          old_fan_speed[fan] = fan_speed[fan];
285
-          set_fan_speed(fan, new_fan_speed[fan]);
291
+          extra_fan_speed[fan].saved = fan_speed[fan];
292
+          set_fan_speed(fan, extra_fan_speed[fan].speed);
286 293
           break;
287 294
         default:
288
-          new_fan_speed[fan] = _MIN(tmp_temp, 255U);
295
+          extra_fan_speed[fan].speed = _MIN(command_or_speed, 255U);
289 296
           break;
290 297
       }
291 298
     }

+ 3
- 2
Marlin/src/module/temperature.h Ver fichero

@@ -561,8 +561,9 @@ class Temperature {
561 561
       }
562 562
 
563 563
       #if ENABLED(EXTRA_FAN_SPEED)
564
-        static uint8_t old_fan_speed[FAN_COUNT], new_fan_speed[FAN_COUNT];
565
-        static void set_temp_fan_speed(const uint8_t fan, const uint16_t tmp_temp);
564
+        typedef struct { uint8_t saved, speed; } extra_fan_t;
565
+        static extra_fan_t extra_fan_speed[FAN_COUNT];
566
+        static void set_temp_fan_speed(const uint8_t fan, const uint16_t command_or_speed);
566 567
       #endif
567 568
 
568 569
       #if EITHER(PROBING_FANS_OFF, ADVANCED_PAUSE_FANS_PAUSE)

Loading…
Cancelar
Guardar