|
@@ -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
|
}
|