Add mmu_continue_loading blocking variant and use it for usb printing, so that "ok" is not returned to the controller in case MMU load failed.
Known limitation: MMU load failed is not handled properly if it happens again after user clicked printer button to continue print.
This commit is contained in:
parent
a60a1cbef4
commit
bf1a55ab02
|
|
@ -7014,7 +7014,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE))
|
||||||
if (mmu_enabled)
|
if (mmu_enabled)
|
||||||
{
|
{
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
mmu_continue_loading();
|
mmu_continue_loading(is_usb_printing);
|
||||||
mmu_extruder = tmp_extruder; //filament change is finished
|
mmu_extruder = tmp_extruder; //filament change is finished
|
||||||
mmu_load_to_nozzle();
|
mmu_load_to_nozzle();
|
||||||
}
|
}
|
||||||
|
|
@ -7052,7 +7052,8 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE))
|
||||||
mmu_command(MmuCmd::T0 + tmp_extruder);
|
mmu_command(MmuCmd::T0 + tmp_extruder);
|
||||||
|
|
||||||
manage_response(true, true, MMU_TCODE_MOVE);
|
manage_response(true, true, MMU_TCODE_MOVE);
|
||||||
mmu_continue_loading();
|
mmu_continue_loading(is_usb_printing);
|
||||||
|
|
||||||
mmu_extruder = tmp_extruder; //filament change is finished
|
mmu_extruder = tmp_extruder; //filament change is finished
|
||||||
|
|
||||||
if (load_to_nozzle)// for single material usage with mmu
|
if (load_to_nozzle)// for single material usage with mmu
|
||||||
|
|
|
||||||
|
|
@ -878,7 +878,7 @@ void mmu_M600_load_filament(bool automatic, float nozzle_temp)
|
||||||
mmu_command(MmuCmd::T0 + tmp_extruder);
|
mmu_command(MmuCmd::T0 + tmp_extruder);
|
||||||
|
|
||||||
manage_response(false, true, MMU_LOAD_MOVE);
|
manage_response(false, true, MMU_LOAD_MOVE);
|
||||||
mmu_continue_loading();
|
mmu_continue_loading(is_usb_printing);
|
||||||
mmu_extruder = tmp_extruder; //filament change is finished
|
mmu_extruder = tmp_extruder; //filament change is finished
|
||||||
|
|
||||||
mmu_load_to_nozzle();
|
mmu_load_to_nozzle();
|
||||||
|
|
@ -1363,7 +1363,7 @@ bFilamentAction=false; // NOT in "mmu_load_to_nozzle_
|
||||||
lcd_print(tmp_extruder + 1);
|
lcd_print(tmp_extruder + 1);
|
||||||
mmu_command(MmuCmd::T0 + tmp_extruder);
|
mmu_command(MmuCmd::T0 + tmp_extruder);
|
||||||
manage_response(true, true, MMU_TCODE_MOVE);
|
manage_response(true, true, MMU_TCODE_MOVE);
|
||||||
mmu_continue_loading();
|
mmu_continue_loading(false);
|
||||||
mmu_extruder = tmp_extruder; //filament change is finished
|
mmu_extruder = tmp_extruder; //filament change is finished
|
||||||
mmu_load_to_nozzle();
|
mmu_load_to_nozzle();
|
||||||
load_filament_final_feed();
|
load_filament_final_feed();
|
||||||
|
|
@ -1464,7 +1464,10 @@ static void load_more()
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void mmu_continue_loading()
|
//! @par blocking
|
||||||
|
//! * true blocking
|
||||||
|
//! * false non-blocking
|
||||||
|
void mmu_continue_loading(bool blocking)
|
||||||
{
|
{
|
||||||
if (ir_sensor_detected)
|
if (ir_sensor_detected)
|
||||||
{
|
{
|
||||||
|
|
@ -1510,9 +1513,28 @@ void mmu_continue_loading()
|
||||||
|
|
||||||
setAllTargetHotends(0);
|
setAllTargetHotends(0);
|
||||||
lcd_setstatuspgm(_i("MMU load failed "));////MSG_RECOVERING_PRINT c=20 r=1
|
lcd_setstatuspgm(_i("MMU load failed "));////MSG_RECOVERING_PRINT c=20 r=1
|
||||||
mmu_fil_loaded = false; //so we can retry same T-code again
|
|
||||||
isPrintPaused = true;
|
if (blocking)
|
||||||
mmu_command(MmuCmd::W0);
|
{
|
||||||
|
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
||||||
|
lcd_consume_click();
|
||||||
|
while(!lcd_clicked()){
|
||||||
|
manage_heater();
|
||||||
|
manage_inactivity(true);
|
||||||
|
lcd_update(0);
|
||||||
|
}
|
||||||
|
KEEPALIVE_STATE(IN_HANDLER);
|
||||||
|
restore_print_from_ram_and_continue(0);
|
||||||
|
mmu_command(MmuCmd::T0 + tmp_extruder);
|
||||||
|
manage_response(true, true, MMU_TCODE_MOVE);
|
||||||
|
load_more();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mmu_fil_loaded = false; //so we can retry same T-code again
|
||||||
|
isPrintPaused = true;
|
||||||
|
mmu_command(MmuCmd::W0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -134,7 +134,7 @@ extern void mmu_eject_filament(uint8_t filament, bool recover);
|
||||||
#ifdef MMU_HAS_CUTTER
|
#ifdef MMU_HAS_CUTTER
|
||||||
extern void mmu_cut_filament(uint8_t filament_nr);
|
extern void mmu_cut_filament(uint8_t filament_nr);
|
||||||
#endif //MMU_HAS_CUTTER
|
#endif //MMU_HAS_CUTTER
|
||||||
extern void mmu_continue_loading();
|
extern void mmu_continue_loading(bool blocking);
|
||||||
extern void mmu_filament_ramming();
|
extern void mmu_filament_ramming();
|
||||||
extern void mmu_wait_for_heater_blocking();
|
extern void mmu_wait_for_heater_blocking();
|
||||||
extern void mmu_load_step(bool synchronize = true);
|
extern void mmu_load_step(bool synchronize = true);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue