Don't raise MMU error screen until retry is done
Change in memory: Flash: +8 bytes SRAM: 0 bytes
This commit is contained in:
parent
853c2ad6e9
commit
738dc511ee
|
|
@ -221,14 +221,14 @@ void MMU2::mmu_loop() {
|
||||||
return;
|
return;
|
||||||
avoidRecursion = true;
|
avoidRecursion = true;
|
||||||
|
|
||||||
mmu_loop_inner();
|
mmu_loop_inner(true);
|
||||||
|
|
||||||
avoidRecursion = false;
|
avoidRecursion = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MMU2::mmu_loop_inner()
|
void __attribute__((noinline)) MMU2::mmu_loop_inner(bool reportErrors)
|
||||||
{
|
{
|
||||||
logicStepLastStatus = LogicStep(); // it looks like the mmu_loop doesn't need to be a blocking call
|
logicStepLastStatus = LogicStep(reportErrors); // it looks like the mmu_loop doesn't need to be a blocking call
|
||||||
|
|
||||||
if (is_mmu_error_monitor_active){
|
if (is_mmu_error_monitor_active){
|
||||||
// Call this every iteration to keep the knob rotation responsive
|
// Call this every iteration to keep the knob rotation responsive
|
||||||
|
|
@ -637,7 +637,7 @@ void MMU2::ResumeHotendTemp() {
|
||||||
ReportErrorHookSensorLineRender();
|
ReportErrorHookSensorLineRender();
|
||||||
waitForHotendTargetTemp(100, []{
|
waitForHotendTargetTemp(100, []{
|
||||||
manage_inactivity(true);
|
manage_inactivity(true);
|
||||||
mmu2.mmu_loop_inner();
|
mmu2.mmu_loop_inner(false);
|
||||||
ReportErrorHookDynamicRender();
|
ReportErrorHookDynamicRender();
|
||||||
});
|
});
|
||||||
lcd_update_enable(true); // temporary hack to stop this locking the printer...
|
lcd_update_enable(true); // temporary hack to stop this locking the printer...
|
||||||
|
|
@ -768,7 +768,7 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
StepStatus MMU2::LogicStep() {
|
StepStatus MMU2::LogicStep(bool reportErrors) {
|
||||||
CheckUserInput(); // Process any buttons before proceeding with another MMU Query
|
CheckUserInput(); // Process any buttons before proceeding with another MMU Query
|
||||||
StepStatus ss = logic.Step();
|
StepStatus ss = logic.Step();
|
||||||
switch (ss) {
|
switch (ss) {
|
||||||
|
|
@ -779,30 +779,36 @@ StepStatus MMU2::LogicStep() {
|
||||||
case Processing:
|
case Processing:
|
||||||
OnMMUProgressMsg(logic.Progress());
|
OnMMUProgressMsg(logic.Progress());
|
||||||
break;
|
break;
|
||||||
case CommandError:
|
|
||||||
ReportError(logic.Error(), ErrorSourceMMU);
|
|
||||||
break;
|
|
||||||
case CommunicationTimeout:
|
|
||||||
state = xState::Connecting;
|
|
||||||
ReportError(ErrorCode::MMU_NOT_RESPONDING, ErrorSourcePrinter);
|
|
||||||
break;
|
|
||||||
case ProtocolError:
|
|
||||||
state = xState::Connecting;
|
|
||||||
ReportError(ErrorCode::PROTOCOL_ERROR, ErrorSourcePrinter);
|
|
||||||
break;
|
|
||||||
case VersionMismatch:
|
|
||||||
StopKeepPowered();
|
|
||||||
ReportError(ErrorCode::VERSION_MISMATCH, ErrorSourcePrinter);
|
|
||||||
break;
|
|
||||||
case ButtonPushed:
|
case ButtonPushed:
|
||||||
lastButton = logic.Button();
|
lastButton = logic.Button();
|
||||||
LogEchoEvent_P(PSTR("MMU Button pushed"));
|
LogEchoEvent_P(PSTR("MMU Button pushed"));
|
||||||
CheckUserInput(); // Process the button immediately
|
CheckUserInput(); // Process the button immediately
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
if(reportErrors) {
|
||||||
|
switch (ss)
|
||||||
|
{
|
||||||
|
case CommandError:
|
||||||
|
ReportError(logic.Error(), ErrorSourceMMU);
|
||||||
|
break;
|
||||||
|
case CommunicationTimeout:
|
||||||
|
state = xState::Connecting;
|
||||||
|
ReportError(ErrorCode::MMU_NOT_RESPONDING, ErrorSourcePrinter);
|
||||||
|
break;
|
||||||
|
case ProtocolError:
|
||||||
|
state = xState::Connecting;
|
||||||
|
ReportError(ErrorCode::PROTOCOL_ERROR, ErrorSourcePrinter);
|
||||||
|
break;
|
||||||
|
case VersionMismatch:
|
||||||
|
StopKeepPowered();
|
||||||
|
ReportError(ErrorCode::VERSION_MISMATCH, ErrorSourcePrinter);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( logic.Running() ){
|
if( logic.Running() ){
|
||||||
state = xState::Active;
|
state = xState::Active;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -229,12 +229,14 @@ private:
|
||||||
|
|
||||||
/// The inner private implementation of mmu_loop()
|
/// The inner private implementation of mmu_loop()
|
||||||
/// which is NOT (!!!) recursion-guarded. Use caution - but we do need it during waiting for hotend resume to keep comms alive!
|
/// which is NOT (!!!) recursion-guarded. Use caution - but we do need it during waiting for hotend resume to keep comms alive!
|
||||||
void mmu_loop_inner();
|
/// @param reportErrors true if Errors should raise MMU Error screen, false otherwise
|
||||||
|
void mmu_loop_inner(bool reportErrors);
|
||||||
|
|
||||||
/// Performs one step of the protocol logic state machine
|
/// Performs one step of the protocol logic state machine
|
||||||
/// and reports progress and errors if needed to attached ExtUIs.
|
/// and reports progress and errors if needed to attached ExtUIs.
|
||||||
/// Updates the global state of MMU (Active/Connecting/Stopped) at runtime, see @ref State
|
/// Updates the global state of MMU (Active/Connecting/Stopped) at runtime, see @ref State
|
||||||
StepStatus LogicStep();
|
/// @param reportErrors true if Errors should raise MMU Error screen, false otherwise
|
||||||
|
StepStatus LogicStep(bool reportErrors);
|
||||||
|
|
||||||
void filament_ramming();
|
void filament_ramming();
|
||||||
void execute_extruder_sequence(const E_Step *sequence, uint8_t steps);
|
void execute_extruder_sequence(const E_Step *sequence, uint8_t steps);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue