PFW-1542 Handle fan error sooner when waiting for heating to complete

While waiting for the nozzle to reach a certain temperature, a fan error
should disable the hotend heater. If printing, it will simply pause the print.

Previously the printer would wait for the nozzle to heat up before pausing the print
and turning off the hotend heater.

We rely on LcdCommands::LongPause and must return to the top level loop to process it.
Waiting in the while loop e.g. in M190 does not make sense.
This commit is contained in:
gudnimg 2023-09-30 14:00:12 +00:00 committed by 3d-gussner
parent 4a91c5018d
commit 341654692d
1 changed files with 11 additions and 0 deletions

View File

@ -6154,6 +6154,12 @@ Sigma_Exit:
while ( (!cancel_heatup) && (target_direction ? (isHeatingBed()) : (isCoolingBed()&&(CooldownNoWait==false))) )
{
if (lcd_commands_type == LcdCommands::LongPause) {
// Print was suddenly paused, break out of the loop
// This can happen when the firmware report a fan error
break;
}
if(( _millis() - codenum) > 1000 ) //Print Temp Reading every 1 second while heating up.
{
if (!farm_mode) {
@ -9788,6 +9794,11 @@ static void wait_for_heater(long codenum, uint8_t extruder) {
#else
while (target_direction ? (isHeatingHotend(tmp_extruder)) : (isCoolingHotend(tmp_extruder) && (CooldownNoWait == false))) {
#endif //TEMP_RESIDENCY_TIME
if (lcd_commands_type == LcdCommands::LongPause) {
// Print was suddenly paused, break out of the loop
// This can happen when the firmware report a fan error
break;
}
if ((_millis() - codenum) > 1000UL)
{ //Print Temp Reading and remaining time every 1 second while heating up/cooling down
if (!farm_mode) {