Reset MMU upon start + fix reporting its start errors

This commit is contained in:
D.R.racer 2022-06-10 08:21:34 +02:00
parent 1ff7459743
commit b880559ba7
2 changed files with 16 additions and 1 deletions

View File

@ -103,7 +103,9 @@ void MMU2::Start() {
mmu2Serial.begin(MMU_BAUD);
PowerOn();
// PowerOn(); we cannot do that on MK3, but at least reset the MMU
Reset(ResetForm::ResetPin);
mmu2Serial.flush(); // make sure the UART buffer is clear before starting communication
extruder = MMU2_NO_TOOL;

View File

@ -294,6 +294,19 @@ StepStatus Idle::Step() {
logic->SwitchFromIdleToCommand();
return Processing;
}
break;
case RequestMsgCodes::Reset:
// this one is kind of special
// we do not transfer to any "running" command (i.e. we stay in Idle),
// but in case there is an error reported we must make sure it gets propagated
if( logic->rsp.paramCode != ResponseMsgParamCodes::Finished ){
logic->errorCode = static_cast<ErrorCode>(logic->rsp.paramValue);
SendFINDAQuery(); // continue Idle state without restarting the communication
return CommandError;
} else {
logic->errorCode = ErrorCode::OK;
}
break;
default:
break;
}