Use uint8_t for all fan speeds (#12032)
This commit is contained in:
		| @@ -170,14 +170,13 @@ uint8_t axis_homed, axis_known_position; // = 0 | ||||
| #endif | ||||
|  | ||||
| #if FAN_COUNT > 0 | ||||
|   int16_t fanSpeeds[FAN_COUNT] = { 0 }; | ||||
|   uint8_t fan_speed[FAN_COUNT] = { 0 }; | ||||
|   #if ENABLED(EXTRA_FAN_SPEED) | ||||
|     int16_t old_fanSpeeds[FAN_COUNT], | ||||
|             new_fanSpeeds[FAN_COUNT]; | ||||
|     uint8_t old_fan_speed[FAN_COUNT], new_fan_speed[FAN_COUNT]; | ||||
|   #endif | ||||
|   #if ENABLED(PROBING_FANS_OFF) | ||||
|     bool fans_paused; // = false; | ||||
|     int16_t paused_fanSpeeds[FAN_COUNT] = { 0 }; | ||||
|     uint8_t paused_fan_speed[FAN_COUNT] = { 0 }; | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| @@ -972,7 +971,7 @@ void loop() { | ||||
|         print_job_timer.stop(); | ||||
|         thermalManager.disable_all_heaters(); | ||||
|         #if FAN_COUNT > 0 | ||||
|           for (uint8_t i = 0; i < FAN_COUNT; i++) fanSpeeds[i] = 0; | ||||
|           for (uint8_t i = 0; i < FAN_COUNT; i++) fan_speed[i] = 0; | ||||
|         #endif | ||||
|         wait_for_heatup = false; | ||||
|         #if ENABLED(POWER_LOSS_RECOVERY) | ||||
|   | ||||
| @@ -208,19 +208,18 @@ extern volatile bool wait_for_heatup; | ||||
| extern millis_t max_inactive_time, stepper_inactive_time; | ||||
|  | ||||
| #if FAN_COUNT > 0 | ||||
|   extern int16_t fanSpeeds[FAN_COUNT]; | ||||
|   extern uint8_t fan_speed[FAN_COUNT]; | ||||
|   #if ENABLED(EXTRA_FAN_SPEED) | ||||
|     extern int16_t old_fanSpeeds[FAN_COUNT], | ||||
|                    new_fanSpeeds[FAN_COUNT]; | ||||
|     extern uint8_t old_fan_speed[FAN_COUNT], new_fan_speed[FAN_COUNT]; | ||||
|   #endif | ||||
|   #if ENABLED(PROBING_FANS_OFF) | ||||
|     extern bool fans_paused; | ||||
|     extern int16_t paused_fanSpeeds[FAN_COUNT]; | ||||
|     extern uint8_t paused_fan_speed[FAN_COUNT]; | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(USE_CONTROLLER_FAN) | ||||
|   extern uint8_t controllerFanSpeed; | ||||
|   extern uint8_t controllerfan_speed; | ||||
| #endif | ||||
|  | ||||
| #if HAS_POWER_SWITCH | ||||
|   | ||||
| @@ -27,7 +27,7 @@ | ||||
| #include "../module/stepper_indirection.h" | ||||
| #include "../module/temperature.h" | ||||
|  | ||||
| uint8_t controllerFanSpeed; | ||||
| uint8_t controllerfan_speed; | ||||
|  | ||||
| void controllerfan_update() { | ||||
|   static millis_t lastMotorOn = 0, // Last time a motor was turned on | ||||
| @@ -75,7 +75,7 @@ void controllerfan_update() { | ||||
|  | ||||
|     // Fan off if no steppers have been enabled for CONTROLLERFAN_SECS seconds | ||||
|     uint8_t speed = (!lastMotorOn || ELAPSED(ms, lastMotorOn + (CONTROLLERFAN_SECS) * 1000UL)) ? 0 : CONTROLLERFAN_SPEED; | ||||
|     controllerFanSpeed = speed; | ||||
|     controllerfan_speed = speed; | ||||
|  | ||||
|     // allows digital or PWM fan output to be used (see M42 handling) | ||||
|     WRITE(CONTROLLER_FAN_PIN, speed); | ||||
|   | ||||
| @@ -39,15 +39,15 @@ millis_t Power::lastPowerOn; | ||||
|  | ||||
| bool Power::is_power_needed() { | ||||
|   #if ENABLED(AUTO_POWER_FANS) | ||||
|     for (uint8_t i = 0; i < FAN_COUNT; i++) if (fanSpeeds[i] > 0) return true; | ||||
|     for (uint8_t i = 0; i < FAN_COUNT; i++) if (fan_speed[i]) return true; | ||||
|   #endif | ||||
|  | ||||
|   #if ENABLED(AUTO_POWER_E_FANS) | ||||
|     HOTEND_LOOP() if (thermalManager.autofan_speed[e] > 0) return true; | ||||
|     HOTEND_LOOP() if (thermalManager.autofan_speed[e]) return true; | ||||
|   #endif | ||||
|  | ||||
|   #if ENABLED(AUTO_POWER_CONTROLLERFAN) && HAS_CONTROLLER_FAN && ENABLED(USE_CONTROLLER_FAN) | ||||
|     if (controllerFanSpeed > 0) return true; | ||||
|     if (controllerfan_speed) return true; | ||||
|   #endif | ||||
|  | ||||
|   // If any of the drivers or the bed are enabled... | ||||
|   | ||||
| @@ -82,9 +82,9 @@ extern uint8_t commands_in_queue, cmd_queue_index_r; | ||||
|         #endif | ||||
|  | ||||
|         #if FAN_COUNT | ||||
|           SERIAL_PROTOCOLPGM("fanSpeeds: "); | ||||
|           SERIAL_PROTOCOLPGM("fan_speed: "); | ||||
|           for (int8_t i = 0; i < FAN_COUNT; i++) { | ||||
|             SERIAL_PROTOCOL(job_recovery_info.fanSpeeds[i]); | ||||
|             SERIAL_PROTOCOL(job_recovery_info.fan_speed[i]); | ||||
|             if (i < FAN_COUNT - 1) SERIAL_CHAR(','); | ||||
|           } | ||||
|           SERIAL_EOL(); | ||||
| @@ -264,7 +264,7 @@ void save_job_recovery_info() { | ||||
|     #endif | ||||
|  | ||||
|     #if FAN_COUNT | ||||
|       COPY(job_recovery_info.fanSpeeds, fanSpeeds); | ||||
|       COPY(job_recovery_info.fan_speed, fan_speed); | ||||
|     #endif | ||||
|  | ||||
|     #if HAS_LEVELING | ||||
|   | ||||
| @@ -52,7 +52,7 @@ typedef struct { | ||||
|   #endif | ||||
|  | ||||
|   #if FAN_COUNT | ||||
|     int16_t fanSpeeds[FAN_COUNT]; | ||||
|     uint8_t fan_speed[FAN_COUNT]; | ||||
|   #endif | ||||
|  | ||||
|   #if HAS_LEVELING | ||||
|   | ||||
| @@ -52,13 +52,13 @@ void GcodeSuite::M42() { | ||||
|   #if FAN_COUNT > 0 | ||||
|     switch (pin) { | ||||
|       #if HAS_FAN0 | ||||
|         case FAN_PIN: fanSpeeds[0] = pin_status; break; | ||||
|         case FAN_PIN: fan_speed[0] = pin_status; break; | ||||
|       #endif | ||||
|       #if HAS_FAN1 | ||||
|         case FAN1_PIN: fanSpeeds[1] = pin_status; break; | ||||
|         case FAN1_PIN: fan_speed[1] = pin_status; break; | ||||
|       #endif | ||||
|       #if HAS_FAN2 | ||||
|         case FAN2_PIN: fanSpeeds[2] = pin_status; break; | ||||
|         case FAN2_PIN: fan_speed[2] = pin_status; break; | ||||
|       #endif | ||||
|     } | ||||
|   #endif | ||||
|   | ||||
| @@ -98,10 +98,10 @@ void GcodeSuite::M81() { | ||||
|   planner.finish_and_disable(); | ||||
|  | ||||
|   #if FAN_COUNT > 0 | ||||
|     for (uint8_t i = 0; i < FAN_COUNT; i++) fanSpeeds[i] = 0; | ||||
|     for (uint8_t i = 0; i < FAN_COUNT; i++) fan_speed[i] = 0; | ||||
|     #if ENABLED(PROBING_FANS_OFF) | ||||
|       fans_paused = false; | ||||
|       ZERO(paused_fanSpeeds); | ||||
|       ZERO(paused_fan_speed); | ||||
|     #endif | ||||
|   #endif | ||||
|  | ||||
|   | ||||
| @@ -49,7 +49,7 @@ void GcodeSuite::M145() { | ||||
|     } | ||||
|     if (parser.seenval('F')) { | ||||
|       v = parser.value_int(); | ||||
|       lcd_preheat_fan_speed[material] = constrain(v, 0, 255); | ||||
|       lcd_preheat_fan_speed[material] = (uint8_t)constrain(v, 0, 255); | ||||
|     } | ||||
|     #if TEMP_SENSOR_BED != 0 | ||||
|       if (parser.seenval('B')) { | ||||
|   | ||||
| @@ -325,8 +325,8 @@ public: | ||||
|   FORCE_INLINE static uint16_t ushortval(const char c, const uint16_t dval=0) { return seenval(c) ? value_ushort()       : dval; } | ||||
|   FORCE_INLINE static int32_t  longval(const char c, const int32_t dval=0)    { return seenval(c) ? value_long()         : dval; } | ||||
|   FORCE_INLINE static uint32_t ulongval(const char c, const uint32_t dval=0)  { return seenval(c) ? value_ulong()        : dval; } | ||||
|   FORCE_INLINE static float    linearval(const char c, const float dval=0) { return seenval(c) ? value_linear_units() : dval; } | ||||
|   FORCE_INLINE static float    celsiusval(const char c, const float dval=0){ return seenval(c) ? value_celsius()      : dval; } | ||||
|   FORCE_INLINE static float    linearval(const char c, const float dval=0)    { return seenval(c) ? value_linear_units() : dval; } | ||||
|   FORCE_INLINE static float    celsiusval(const char c, const float dval=0)   { return seenval(c) ? value_celsius()      : dval; } | ||||
|  | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -25,7 +25,7 @@ | ||||
| #if FAN_COUNT > 0 | ||||
|  | ||||
| #include "../gcode.h" | ||||
| #include "../../Marlin.h" // for fanSpeeds — should move those to Planner | ||||
| #include "../../Marlin.h" // for fan_speed — should move those to Planner | ||||
|  | ||||
| /** | ||||
|  * M106: Set Fan Speed | ||||
| @@ -48,21 +48,22 @@ void GcodeSuite::M106() { | ||||
|       if (t > 0) { | ||||
|         switch (t) { | ||||
|           case 1: | ||||
|             fanSpeeds[p] = old_fanSpeeds[p]; | ||||
|             fan_speed[p] = old_fan_speed[p]; | ||||
|             break; | ||||
|           case 2: | ||||
|             old_fanSpeeds[p] = fanSpeeds[p]; | ||||
|             fanSpeeds[p] = new_fanSpeeds[p]; | ||||
|             old_fan_speed[p] = fan_speed[p]; | ||||
|             fan_speed[p] = new_fan_speed[p]; | ||||
|             break; | ||||
|           default: | ||||
|             new_fanSpeeds[p] = MIN(t, 255); | ||||
|             new_fan_speed[p] = MIN(t, 255); | ||||
|             break; | ||||
|         } | ||||
|         return; | ||||
|  | ||||
|       } | ||||
|     #endif // EXTRA_FAN_SPEED | ||||
|     const uint16_t s = parser.ushortval('S', 255); | ||||
|     fanSpeeds[p] = MIN(s, 255U); | ||||
|     fan_speed[p] = MIN(s, 255U); | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -71,7 +72,7 @@ void GcodeSuite::M106() { | ||||
|  */ | ||||
| void GcodeSuite::M107() { | ||||
|   const uint16_t p = parser.ushortval('P'); | ||||
|   if (p < FAN_COUNT) fanSpeeds[p] = 0; | ||||
|   if (p < FAN_COUNT) fan_speed[p] = 0; | ||||
| } | ||||
|  | ||||
| #endif // FAN_COUNT > 0 | ||||
|   | ||||
| @@ -207,7 +207,7 @@ static void lcd_implementation_status_screen() { | ||||
|     static uint8_t fan_frame; | ||||
|     if (old_blink != blink) { | ||||
|       old_blink = blink; | ||||
|       if (!fanSpeeds[0] || ++fan_frame >= FAN_ANIM_FRAMES) fan_frame = 0; | ||||
|       if (!fan_speed[0] || ++fan_frame >= FAN_ANIM_FRAMES) fan_frame = 0; | ||||
|     } | ||||
|   #endif | ||||
|  | ||||
| @@ -245,7 +245,7 @@ static void lcd_implementation_status_screen() { | ||||
|             fan_frame == 3 ? status_screen3_bmp : | ||||
|           #endif | ||||
|         #else | ||||
|           blink && fanSpeeds[0] ? status_screen1_bmp : | ||||
|           blink && fan_speed[0] ? status_screen1_bmp : | ||||
|         #endif | ||||
|       #endif | ||||
|       status_screen0_bmp | ||||
| @@ -269,7 +269,7 @@ static void lcd_implementation_status_screen() { | ||||
|     #if HAS_FAN0 | ||||
|       if (PAGE_CONTAINS(STATUS_SCREEN_FAN_TEXT_Y - 7, STATUS_SCREEN_FAN_TEXT_Y)) { | ||||
|         // Fan | ||||
|         const int16_t per = ((fanSpeeds[0] + 1) * 100) / 256; | ||||
|         const uint16_t per = (((uint16_t)fan_speed[0] + 1) * 100) / 256; | ||||
|         if (per) { | ||||
|           lcd_moveto(STATUS_SCREEN_FAN_TEXT_X, STATUS_SCREEN_FAN_TEXT_Y); | ||||
|           lcd_put_u8str(itostr3(per)); | ||||
|   | ||||
| @@ -710,7 +710,7 @@ bool ST7920_Lite_Status_Screen::indicators_changed() { | ||||
|   // them only during blinks we gain a bit of stability. | ||||
|   const bool       blink             = lcd_blink(); | ||||
|   const uint16_t   feedrate_perc     = feedrate_percentage; | ||||
|   const uint8_t    fan_speed         = ((fanSpeeds[0] + 1) * 100) / 256; | ||||
|   const uint8_t    fs                = (((uint16_t)fan_speed[0] + 1) * 100) / 256; | ||||
|   const int16_t    extruder_1_target = thermalManager.degTargetHotend(0); | ||||
|   #if HOTENDS > 1 | ||||
|     const int16_t  extruder_2_target = thermalManager.degTargetHotend(1); | ||||
| @@ -719,7 +719,7 @@ bool ST7920_Lite_Status_Screen::indicators_changed() { | ||||
|     const int16_t  bed_target        = thermalManager.degTargetBed(); | ||||
|   #endif | ||||
|   static uint16_t last_checksum = 0; | ||||
|   const uint16_t checksum = blink ^ feedrate_perc ^ fan_speed ^ extruder_1_target | ||||
|   const uint16_t checksum = blink ^ feedrate_perc ^ fs ^ extruder_1_target | ||||
|     #if HOTENDS > 1 | ||||
|       ^ extruder_2_target | ||||
|     #endif | ||||
| @@ -737,7 +737,7 @@ void ST7920_Lite_Status_Screen::update_indicators(const bool forceUpdate) { | ||||
|     const bool       blink             = lcd_blink(); | ||||
|     const duration_t elapsed           = print_job_timer.duration(); | ||||
|     const uint16_t   feedrate_perc     = feedrate_percentage; | ||||
|     const uint8_t    fan_speed         = ((fanSpeeds[0] + 1) * 100) / 256; | ||||
|     const uint8_t    fs                = (((uint16_t)fan_speed[0] + 1) * 100) / 256; | ||||
|     const int16_t    extruder_1_temp   = thermalManager.degHotend(0), | ||||
|                      extruder_1_target = thermalManager.degTargetHotend(0); | ||||
|     #if HOTENDS > 1 | ||||
| @@ -756,12 +756,12 @@ void ST7920_Lite_Status_Screen::update_indicators(const bool forceUpdate) { | ||||
|     #if HAS_HEATED_BED | ||||
|       draw_bed_temp(bed_temp, bed_target, forceUpdate); | ||||
|     #endif | ||||
|     draw_fan_speed(fan_speed); | ||||
|     draw_fan_speed(fs); | ||||
|     draw_print_time(elapsed); | ||||
|     draw_feedrate_percentage(feedrate_perc); | ||||
|  | ||||
|     // Update the fan and bed animations | ||||
|     if (fan_speed > 0) draw_fan_icon(blink); | ||||
|     if (fs) draw_fan_icon(blink); | ||||
|     #if HAS_HEATED_BED | ||||
|       if (bed_target > 0) | ||||
|         draw_heat_icon(blink, true); | ||||
|   | ||||
| @@ -85,7 +85,7 @@ static const uint8_t u8g_dev_st7920_128x64_HAL_init_seq[] PROGMEM = { | ||||
|   U8G_ESC_END         // end of sequence | ||||
| }; | ||||
|  | ||||
| void clear_graphics_DRAM(u8g_t *u8g, u8g_dev_t *dev){ | ||||
| void clear_graphics_DRAM(u8g_t *u8g, u8g_dev_t *dev) { | ||||
|   u8g_SetChipSelect(u8g, dev, 1); | ||||
|   u8g_Delay(1); | ||||
|   u8g_SetAddress(u8g, dev, 0);         // cmd mode | ||||
|   | ||||
| @@ -255,7 +255,7 @@ void process_lcd_p_command(const char* command) { | ||||
|         print_job_timer.stop(); | ||||
|         thermalManager.disable_all_heaters(); | ||||
|         #if FAN_COUNT > 0 | ||||
|           for (uint8_t i = 0; i < FAN_COUNT; i++) fanSpeeds[i] = 0; | ||||
|           for (uint8_t i = 0; i < FAN_COUNT; i++) fan_speed[i] = 0; | ||||
|         #endif | ||||
|         wait_for_heatup = false; | ||||
|         write_to_lcd_P(PSTR("{SYS:STARTED}")); | ||||
|   | ||||
| @@ -159,7 +159,8 @@ millis_t next_lcd_update_ms; | ||||
|   constexpr int8_t menu_bottom = LCD_HEIGHT - (TALL_FONT_CORRECTION); | ||||
|  | ||||
|   // Initialized by settings.load() | ||||
|   int16_t lcd_preheat_hotend_temp[2], lcd_preheat_bed_temp[2], lcd_preheat_fan_speed[2]; | ||||
|   int16_t lcd_preheat_hotend_temp[2], lcd_preheat_bed_temp[2]; | ||||
|   uint8_t lcd_preheat_fan_speed[2]; | ||||
|  | ||||
|   #if ENABLED(AUTO_BED_LEVELING_UBL) || ENABLED(G26_MESH_VALIDATION) | ||||
|     bool lcd_external_control; // = false | ||||
| @@ -945,7 +946,7 @@ void lcd_quick_feedback(const bool clear_buttons) { | ||||
|  | ||||
|       // Restore print cooling fan speeds | ||||
|       for (uint8_t i = 0; i < FAN_COUNT; i++) { | ||||
|         int16_t f = job_recovery_info.fanSpeeds[i]; | ||||
|         uint8_t f = job_recovery_info.fan_speed[i]; | ||||
|         if (f) { | ||||
|           sprintf_P(cmd, PSTR("M106 P%i S%i"), i, f); | ||||
|           enqueue_and_echo_command(cmd); | ||||
| @@ -1553,21 +1554,21 @@ void lcd_quick_feedback(const bool clear_buttons) { | ||||
|     // | ||||
|     #if FAN_COUNT > 0 | ||||
|       #if HAS_FAN0 | ||||
|         MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED FAN_SPEED_1_SUFFIX, &fanSpeeds[0], 0, 255); | ||||
|         MENU_MULTIPLIER_ITEM_EDIT(int8, MSG_FAN_SPEED FAN_SPEED_1_SUFFIX, &fan_speed[0], 0, 255); | ||||
|         #if ENABLED(EXTRA_FAN_SPEED) | ||||
|           MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_EXTRA_FAN_SPEED FAN_SPEED_1_SUFFIX, &new_fanSpeeds[0], 3, 255); | ||||
|           MENU_MULTIPLIER_ITEM_EDIT(int8, MSG_EXTRA_FAN_SPEED FAN_SPEED_1_SUFFIX, &new_fan_speed[0], 3, 255); | ||||
|         #endif | ||||
|       #endif | ||||
|       #if HAS_FAN1 | ||||
|         MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED " 2", &fanSpeeds[1], 0, 255); | ||||
|         MENU_MULTIPLIER_ITEM_EDIT(int8, MSG_FAN_SPEED " 2", &fan_speed[1], 0, 255); | ||||
|         #if ENABLED(EXTRA_FAN_SPEED) | ||||
|           MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_EXTRA_FAN_SPEED " 2", &new_fanSpeeds[1], 3, 255); | ||||
|           MENU_MULTIPLIER_ITEM_EDIT(int8, MSG_EXTRA_FAN_SPEED " 2", &new_fan_speed[1], 3, 255); | ||||
|         #endif | ||||
|       #endif | ||||
|       #if HAS_FAN2 | ||||
|         MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED " 3", &fanSpeeds[2], 0, 255); | ||||
|         MENU_MULTIPLIER_ITEM_EDIT(int8, MSG_FAN_SPEED " 3", &fan_speed[2], 0, 255); | ||||
|         #if ENABLED(EXTRA_FAN_SPEED) | ||||
|           MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_EXTRA_FAN_SPEED " 3", &new_fanSpeeds[2], 3, 255); | ||||
|           MENU_MULTIPLIER_ITEM_EDIT(int8, MSG_EXTRA_FAN_SPEED " 3", &new_fan_speed[2], 3, 255); | ||||
|         #endif | ||||
|       #endif | ||||
|     #endif // FAN_COUNT > 0 | ||||
| @@ -1669,7 +1670,7 @@ void lcd_quick_feedback(const bool clear_buttons) { | ||||
|    * "Temperature" submenu items | ||||
|    * | ||||
|    */ | ||||
|   void _lcd_preheat(const int16_t endnum, const int16_t temph, const int16_t tempb, const int16_t fan) { | ||||
|   void _lcd_preheat(const int16_t endnum, const int16_t temph, const int16_t tempb, const uint8_t fan) { | ||||
|     if (temph > 0) thermalManager.setTargetHotend(MIN(heater_maxtemp[endnum], temph), endnum); | ||||
|     #if HAS_HEATED_BED | ||||
|       if (tempb >= 0) thermalManager.setTargetBed(tempb); | ||||
| @@ -1678,9 +1679,9 @@ void lcd_quick_feedback(const bool clear_buttons) { | ||||
|     #endif | ||||
|     #if FAN_COUNT > 0 | ||||
|       #if FAN_COUNT > 1 | ||||
|         fanSpeeds[active_extruder < FAN_COUNT ? active_extruder : 0] = fan; | ||||
|         fan_speed[active_extruder < FAN_COUNT ? active_extruder : 0] = fan; | ||||
|       #else | ||||
|         fanSpeeds[0] = fan; | ||||
|         fan_speed[0] = fan; | ||||
|       #endif | ||||
|     #else | ||||
|       UNUSED(fan); | ||||
| @@ -1915,7 +1916,7 @@ void lcd_quick_feedback(const bool clear_buttons) { | ||||
|  | ||||
|   void lcd_cooldown() { | ||||
|     #if FAN_COUNT > 0 | ||||
|       for (uint8_t i = 0; i < FAN_COUNT; i++) fanSpeeds[i] = 0; | ||||
|       for (uint8_t i = 0; i < FAN_COUNT; i++) fan_speed[i] = 0; | ||||
|     #endif | ||||
|     thermalManager.disable_all_heaters(); | ||||
|     lcd_return_to_status(); | ||||
| @@ -3609,21 +3610,21 @@ void lcd_quick_feedback(const bool clear_buttons) { | ||||
|     // | ||||
|     #if FAN_COUNT > 0 | ||||
|       #if HAS_FAN0 | ||||
|         MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED FAN_SPEED_1_SUFFIX, &fanSpeeds[0], 0, 255); | ||||
|         MENU_MULTIPLIER_ITEM_EDIT(int8, MSG_FAN_SPEED FAN_SPEED_1_SUFFIX, &fan_speed[0], 0, 255); | ||||
|         #if ENABLED(EXTRA_FAN_SPEED) | ||||
|           MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_EXTRA_FAN_SPEED FAN_SPEED_1_SUFFIX, &new_fanSpeeds[0], 3, 255); | ||||
|           MENU_MULTIPLIER_ITEM_EDIT(int8, MSG_EXTRA_FAN_SPEED FAN_SPEED_1_SUFFIX, &new_fan_speed[0], 3, 255); | ||||
|         #endif | ||||
|       #endif | ||||
|       #if HAS_FAN1 | ||||
|         MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED " 2", &fanSpeeds[1], 0, 255); | ||||
|         MENU_MULTIPLIER_ITEM_EDIT(int8, MSG_FAN_SPEED " 2", &fan_speed[1], 0, 255); | ||||
|         #if ENABLED(EXTRA_FAN_SPEED) | ||||
|           MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_EXTRA_FAN_SPEED " 2", &new_fanSpeeds[1], 3, 255); | ||||
|           MENU_MULTIPLIER_ITEM_EDIT(int8, MSG_EXTRA_FAN_SPEED " 2", &new_fan_speed[1], 3, 255); | ||||
|         #endif | ||||
|       #endif | ||||
|       #if HAS_FAN2 | ||||
|         MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED " 3", &fanSpeeds[2], 0, 255); | ||||
|         MENU_MULTIPLIER_ITEM_EDIT(int8, MSG_FAN_SPEED " 3", &fan_speed[2], 0, 255); | ||||
|         #if ENABLED(EXTRA_FAN_SPEED) | ||||
|           MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_EXTRA_FAN_SPEED " 3", &new_fanSpeeds[2], 3, 255); | ||||
|           MENU_MULTIPLIER_ITEM_EDIT(int8, MSG_EXTRA_FAN_SPEED " 3", &new_fan_speed[2], 3, 255); | ||||
|         #endif | ||||
|       #endif | ||||
|     #endif // FAN_COUNT > 0 | ||||
| @@ -3755,7 +3756,7 @@ void lcd_quick_feedback(const bool clear_buttons) { | ||||
|       #endif | ||||
|       START_MENU(); | ||||
|       MENU_BACK(MSG_CONFIGURATION); | ||||
|       MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &lcd_preheat_fan_speed[material], 0, 255); | ||||
|       MENU_ITEM_EDIT(int8, MSG_FAN_SPEED, &lcd_preheat_fan_speed[material], 0, 255); | ||||
|       #if HAS_TEMP_HOTEND | ||||
|         MENU_ITEM_EDIT(int3, MSG_NOZZLE, &lcd_preheat_hotend_temp[material], MINTEMP_ALL, MAXTEMP_ALL - 15); | ||||
|       #endif | ||||
|   | ||||
| @@ -107,7 +107,8 @@ | ||||
|     typedef void (*screenFunc_t)(); | ||||
|     typedef void (*menuAction_t)(); | ||||
|  | ||||
|     extern int16_t lcd_preheat_hotend_temp[2], lcd_preheat_bed_temp[2], lcd_preheat_fan_speed[2]; | ||||
|     extern int16_t lcd_preheat_hotend_temp[2], lcd_preheat_bed_temp[2]; | ||||
|     extern uint8_t lcd_preheat_fan_speed[2]; | ||||
|  | ||||
|     #if ENABLED(AUTO_BED_LEVELING_UBL) || ENABLED(G26_MESH_VALIDATION) | ||||
|       extern bool lcd_external_control; | ||||
|   | ||||
| @@ -1008,13 +1008,13 @@ static void lcd_implementation_status_screen() { | ||||
|       #if FAN_COUNT > 0 | ||||
|         if (0 | ||||
|           #if HAS_FAN0 | ||||
|             || fanSpeeds[0] | ||||
|             || fan_speed[0] | ||||
|           #endif | ||||
|           #if HAS_FAN1 | ||||
|             || fanSpeeds[1] | ||||
|             || fan_speed[1] | ||||
|           #endif | ||||
|           #if HAS_FAN2 | ||||
|             || fanSpeeds[2] | ||||
|             || fan_speed[2] | ||||
|           #endif | ||||
|         ) leds |= LED_C; | ||||
|       #endif // FAN_COUNT > 0 | ||||
|   | ||||
| @@ -31,7 +31,7 @@ void fastDigitalWrite(uint8_t pin, bool value) { | ||||
|  * @return value read | ||||
|  */ | ||||
| static inline __attribute__((always_inline)) | ||||
| bool fastDigitalRead(uint8_t pin){ | ||||
| bool fastDigitalRead(uint8_t pin) { | ||||
|   return g_APinDescription[pin].pPort->PIO_PDSR & g_APinDescription[pin].ulPin; | ||||
| } | ||||
| //------------------------------------------------------------------------------ | ||||
| @@ -40,7 +40,7 @@ bool fastDigitalRead(uint8_t pin){ | ||||
|  * @param[in] level value to write | ||||
|  */ | ||||
| static inline __attribute__((always_inline)) | ||||
| void fastDigitalWrite(uint8_t pin, bool value){ | ||||
| void fastDigitalWrite(uint8_t pin, bool value) { | ||||
|   if (value) | ||||
|     g_APinDescription[pin].pPort->PIO_SODR = g_APinDescription[pin].ulPin; | ||||
|   else | ||||
|   | ||||
| @@ -37,7 +37,7 @@ | ||||
|  */ | ||||
|  | ||||
| // Change EEPROM version if the structure changes | ||||
| #define EEPROM_VERSION "V59" | ||||
| #define EEPROM_VERSION "V60" | ||||
| #define EEPROM_OFFSET 0 | ||||
|  | ||||
| // Check the integrity of data offsets. | ||||
| @@ -214,8 +214,8 @@ typedef struct SettingsDataStruct { | ||||
|   // ULTIPANEL | ||||
|   // | ||||
|   int16_t lcd_preheat_hotend_temp[2],                   // M145 S0 H | ||||
|           lcd_preheat_bed_temp[2],                      // M145 S0 B | ||||
|           lcd_preheat_fan_speed[2];                     // M145 S0 F | ||||
|           lcd_preheat_bed_temp[2];                      // M145 S0 B | ||||
|   uint8_t lcd_preheat_fan_speed[2];                     // M145 S0 F | ||||
|  | ||||
|   // | ||||
|   // PIDTEMP | ||||
| @@ -630,8 +630,8 @@ void MarlinSettings::postprocess() { | ||||
|  | ||||
|     #if DISABLED(ULTIPANEL) | ||||
|       constexpr int16_t lcd_preheat_hotend_temp[2] = { PREHEAT_1_TEMP_HOTEND, PREHEAT_2_TEMP_HOTEND }, | ||||
|                         lcd_preheat_bed_temp[2] = { PREHEAT_1_TEMP_BED, PREHEAT_2_TEMP_BED }, | ||||
|                         lcd_preheat_fan_speed[2] = { PREHEAT_1_FAN_SPEED, PREHEAT_2_FAN_SPEED }; | ||||
|                         lcd_preheat_bed_temp[2] = { PREHEAT_1_TEMP_BED, PREHEAT_2_TEMP_BED }; | ||||
|       constexpr uint8_t lcd_preheat_fan_speed[2] = { PREHEAT_1_FAN_SPEED, PREHEAT_2_FAN_SPEED }; | ||||
|     #endif | ||||
|  | ||||
|     EEPROM_WRITE(lcd_preheat_hotend_temp); | ||||
| @@ -1238,17 +1238,13 @@ void MarlinSettings::postprocess() { | ||||
|       _FIELD_TEST(lcd_preheat_hotend_temp); | ||||
|  | ||||
|       #if DISABLED(ULTIPANEL) | ||||
|         int16_t lcd_preheat_hotend_temp[2], lcd_preheat_bed_temp[2], lcd_preheat_fan_speed[2]; | ||||
|         int16_t lcd_preheat_hotend_temp[2], lcd_preheat_bed_temp[2]; | ||||
|         uint8_t lcd_preheat_fan_speed[2]; | ||||
|       #endif | ||||
|       EEPROM_READ(lcd_preheat_hotend_temp); // 2 floats | ||||
|       EEPROM_READ(lcd_preheat_bed_temp);    // 2 floats | ||||
|       EEPROM_READ(lcd_preheat_fan_speed);   // 2 floats | ||||
|  | ||||
|       //EEPROM_ASSERT( | ||||
|       //  WITHIN(lcd_preheat_fan_speed, 0, 255), | ||||
|       //  "lcd_preheat_fan_speed out of range" | ||||
|       //); | ||||
|  | ||||
|       // | ||||
|       // Hotend PID | ||||
|       // | ||||
| @@ -2489,7 +2485,7 @@ void MarlinSettings::reset(PORTARG_SOLO) { | ||||
|         SERIAL_ECHOPAIR_P(port, "  M145 S", (int)i); | ||||
|         SERIAL_ECHOPAIR_P(port, " H", TEMP_UNIT(lcd_preheat_hotend_temp[i])); | ||||
|         SERIAL_ECHOPAIR_P(port, " B", TEMP_UNIT(lcd_preheat_bed_temp[i])); | ||||
|         SERIAL_ECHOLNPAIR_P(port, " F", lcd_preheat_fan_speed[i]); | ||||
|         SERIAL_ECHOLNPAIR_P(port, " F", int(lcd_preheat_fan_speed[i])); | ||||
|       } | ||||
|     #endif // ULTIPANEL | ||||
|  | ||||
|   | ||||
| @@ -1187,8 +1187,8 @@ void Planner::recalculate() { | ||||
|  * Maintain fans, paste extruder pressure, | ||||
|  */ | ||||
| void Planner::check_axes_activity() { | ||||
|   unsigned char axis_active[NUM_AXIS] = { 0 }, | ||||
|                 tail_fan_speed[FAN_COUNT]; | ||||
|   uint8_t axis_active[NUM_AXIS] = { 0 }, | ||||
|           tail_fan_speed[FAN_COUNT]; | ||||
|  | ||||
|   #if ENABLED(BARICUDA) | ||||
|     #if HAS_HEATER_1 | ||||
| @@ -1225,7 +1225,7 @@ void Planner::check_axes_activity() { | ||||
|   } | ||||
|   else { | ||||
|     #if FAN_COUNT > 0 | ||||
|       for (uint8_t i = 0; i < FAN_COUNT; i++) tail_fan_speed[i] = fanSpeeds[i]; | ||||
|       for (uint8_t i = 0; i < FAN_COUNT; i++) tail_fan_speed[i] = fan_speed[i]; | ||||
|     #endif | ||||
|  | ||||
|     #if ENABLED(BARICUDA) | ||||
| @@ -1774,7 +1774,7 @@ bool Planner::_populate_block(block_t * const block, bool split_move, | ||||
|   #endif | ||||
|  | ||||
|   #if FAN_COUNT > 0 | ||||
|     for (uint8_t i = 0; i < FAN_COUNT; i++) block->fan_speed[i] = fanSpeeds[i]; | ||||
|     for (uint8_t i = 0; i < FAN_COUNT; i++) block->fan_speed[i] = fan_speed[i]; | ||||
|   #endif | ||||
|  | ||||
|   #if ENABLED(BARICUDA) | ||||
|   | ||||
| @@ -144,7 +144,7 @@ typedef struct { | ||||
|            acceleration_steps_per_s2;       // acceleration steps/sec^2 | ||||
|  | ||||
|   #if FAN_COUNT > 0 | ||||
|     uint16_t fan_speed[FAN_COUNT]; | ||||
|     uint8_t fan_speed[FAN_COUNT]; | ||||
|   #endif | ||||
|  | ||||
|   #if ENABLED(BARICUDA) | ||||
|   | ||||
| @@ -273,12 +273,12 @@ float zprobe_zoffset; // Initialized by settings.load() | ||||
|       fans_paused = p; | ||||
|       if (p) | ||||
|         for (uint8_t x = 0; x < FAN_COUNT; x++) { | ||||
|           paused_fanSpeeds[x] = fanSpeeds[x]; | ||||
|           fanSpeeds[x] = 0; | ||||
|           paused_fan_speed[x] = fan_speed[x]; | ||||
|           fan_speed[x] = 0; | ||||
|         } | ||||
|       else | ||||
|         for (uint8_t x = 0; x < FAN_COUNT; x++) | ||||
|           fanSpeeds[x] = paused_fanSpeeds[x]; | ||||
|           fan_speed[x] = paused_fan_speed[x]; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -97,7 +97,7 @@ int16_t Temperature::current_temperature_raw[HOTENDS] = { 0 }, | ||||
|         Temperature::target_temperature[HOTENDS] = { 0 }; | ||||
|  | ||||
| #if ENABLED(AUTO_POWER_E_FANS) | ||||
|   int16_t Temperature::autofan_speed[HOTENDS] = { 0 }; | ||||
|   uint8_t Temperature::autofan_speed[HOTENDS] = { 0 }; | ||||
| #endif | ||||
|  | ||||
| #if HAS_HEATED_BED | ||||
|   | ||||
| @@ -123,7 +123,7 @@ class Temperature { | ||||
|     static uint8_t soft_pwm_amount[HOTENDS]; | ||||
|  | ||||
|     #if ENABLED(AUTO_POWER_E_FANS) | ||||
|       static int16_t autofan_speed[HOTENDS]; | ||||
|       static uint8_t autofan_speed[HOTENDS]; | ||||
|     #endif | ||||
|  | ||||
|     #if ENABLED(FAN_SOFT_PWM) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user