PFW-1440 Fix issue where cooldown timer is not set after a faile retry
This commit is contained in:
parent
37ac33bc32
commit
c8157919b1
|
|
@ -636,12 +636,20 @@ void MMU2::Home(uint8_t mode){
|
||||||
logic.Home(mode);
|
logic.Home(mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MMU2::SaveAndPark(bool move_axes, bool turn_off_nozzle) {
|
void MMU2::SaveHotendTemp(bool turn_off_nozzle) {
|
||||||
|
if (mmu_print_saved & SavedState::Cooldown) return;
|
||||||
|
|
||||||
|
if (turn_off_nozzle && !(mmu_print_saved & SavedState::CooldownPending)){
|
||||||
|
resume_hotend_temp = degTargetHotend(active_extruder);
|
||||||
|
mmu_print_saved |= SavedState::CooldownPending;
|
||||||
|
LogEchoEvent_P(PSTR("Heater cooldown pending"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MMU2::SaveAndPark(bool move_axes) {
|
||||||
if (mmu_print_saved == SavedState::None) { // First occurrence. Save current position, park print head, disable nozzle heater.
|
if (mmu_print_saved == SavedState::None) { // First occurrence. Save current position, park print head, disable nozzle heater.
|
||||||
LogEchoEvent_P(PSTR("Saving and parking"));
|
LogEchoEvent_P(PSTR("Saving and parking"));
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
|
|
||||||
resume_hotend_temp = degTargetHotend(active_extruder);
|
|
||||||
|
|
||||||
if (move_axes){
|
if (move_axes){
|
||||||
mmu_print_saved |= SavedState::ParkExtruder;
|
mmu_print_saved |= SavedState::ParkExtruder;
|
||||||
|
|
@ -662,13 +670,6 @@ void MMU2::SaveAndPark(bool move_axes, bool turn_off_nozzle) {
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (turn_off_nozzle){
|
|
||||||
mmu_print_saved |= SavedState::CooldownPending;
|
|
||||||
LogEchoEvent_P(PSTR("Heater cooldown pending"));
|
|
||||||
// This just sets the flag that we should timeout and shut off the nozzle in 30 minutes...
|
|
||||||
//setAllTargetHotends(0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// keep the motors powered forever (until some other strategy is chosen)
|
// keep the motors powered forever (until some other strategy is chosen)
|
||||||
// @@TODO do we need that in 8bit?
|
// @@TODO do we need that in 8bit?
|
||||||
|
|
@ -806,6 +807,7 @@ bool MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) {
|
||||||
case Finished:
|
case Finished:
|
||||||
// command/operation completed, let Marlin continue its work
|
// command/operation completed, let Marlin continue its work
|
||||||
// the E may have some more moves to finish - wait for them
|
// the E may have some more moves to finish - wait for them
|
||||||
|
ResumeHotendTemp();
|
||||||
ResumeUnpark(); // We can now travel back to the tower or wherever we were when we saved.
|
ResumeUnpark(); // We can now travel back to the tower or wherever we were when we saved.
|
||||||
ResetRetryAttempts(); // Reset the retry counter.
|
ResetRetryAttempts(); // Reset the retry counter.
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
|
|
@ -817,15 +819,15 @@ bool MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) {
|
||||||
CheckUserInput();
|
CheckUserInput();
|
||||||
return true;
|
return true;
|
||||||
case CommandError:
|
case CommandError:
|
||||||
// Don't proceed to the park/save if we are doing an autoretry.
|
|
||||||
if (inAutoRetry){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
[[fallthrough]];
|
|
||||||
case CommunicationTimeout:
|
case CommunicationTimeout:
|
||||||
case ProtocolError:
|
case ProtocolError:
|
||||||
SaveAndPark(move_axes, turn_off_nozzle); // and wait for the user to resolve the problem
|
case ButtonPushed:
|
||||||
CheckUserInput();
|
if (!inAutoRetry){
|
||||||
|
// Don't proceed to the park/save if we are doing an autoretry.
|
||||||
|
SaveAndPark(move_axes);
|
||||||
|
SaveHotendTemp(turn_off_nozzle);
|
||||||
|
CheckUserInput();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case CommunicationRecovered: // @@TODO communication recovered and may be an error recovered as well
|
case CommunicationRecovered: // @@TODO communication recovered and may be an error recovered as well
|
||||||
// may be the logic layer can detect the change of state a respond with one "Recovered" to be handled here
|
// may be the logic layer can detect the change of state a respond with one "Recovered" to be handled here
|
||||||
|
|
|
||||||
|
|
@ -256,9 +256,13 @@ private:
|
||||||
void OnMMUProgressMsgChanged(ProgressCode pc);
|
void OnMMUProgressMsgChanged(ProgressCode pc);
|
||||||
/// Repeated calls when progress code remains the same
|
/// Repeated calls when progress code remains the same
|
||||||
void OnMMUProgressMsgSame(ProgressCode pc);
|
void OnMMUProgressMsgSame(ProgressCode pc);
|
||||||
|
|
||||||
|
/// @brief Save hotend temperature and set flag to cooldown hotend after 60 minutes
|
||||||
|
/// @param turn_off_nozzle if true, the hotend temperature will be set to 0degC after 60 minutes
|
||||||
|
void SaveHotendTemp(bool turn_off_nozzle);
|
||||||
|
|
||||||
/// Save print and park the print head
|
/// Save print and park the print head
|
||||||
void SaveAndPark(bool move_axes, bool turn_off_nozzle);
|
void SaveAndPark(bool move_axes);
|
||||||
|
|
||||||
/// Resume hotend temperature, if it was cooled. Safe to call if we aren't saved.
|
/// Resume hotend temperature, if it was cooled. Safe to call if we aren't saved.
|
||||||
void ResumeHotendTemp();
|
void ResumeHotendTemp();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue