Support 3x Retry in Idle state machine
This commit is contained in:
parent
ab32769487
commit
b9d9308f9f
|
|
@ -364,6 +364,12 @@ StepStatus Idle::Step() {
|
||||||
// we do not transfer to any "running" command (i.e. we stay in Idle),
|
// 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
|
// but in case there is an error reported we must make sure it gets propagated
|
||||||
switch( logic->rsp.paramCode ){
|
switch( logic->rsp.paramCode ){
|
||||||
|
case ResponseMsgParamCodes::Button:
|
||||||
|
// The user pushed a button on the MMU. Save it, do what we need to do
|
||||||
|
// to prepare, then pass it back to the MMU so it can work its magic.
|
||||||
|
logic->buttonCode = static_cast<Buttons>(logic->rsp.paramValue);
|
||||||
|
SendFINDAQuery();
|
||||||
|
return ButtonPushed;
|
||||||
case ResponseMsgParamCodes::Processing:
|
case ResponseMsgParamCodes::Processing:
|
||||||
// @@TODO we may actually use this branch to report progress of manual operation on the MMU
|
// @@TODO we may actually use this branch to report progress of manual operation on the MMU
|
||||||
// The MMU sends e.g. X0 P27 after its restart when the user presses an MMU button to move the Selector
|
// The MMU sends e.g. X0 P27 after its restart when the user presses an MMU button to move the Selector
|
||||||
|
|
@ -385,6 +391,16 @@ StepStatus Idle::Step() {
|
||||||
break;
|
break;
|
||||||
case State::FINDAReqSent:
|
case State::FINDAReqSent:
|
||||||
return ProcessFINDAReqSent(Finished, State::Ready);
|
return ProcessFINDAReqSent(Finished, State::Ready);
|
||||||
|
case State::ButtonSent:{
|
||||||
|
// button is never confirmed ... may be it should be
|
||||||
|
if (auto expmsg = logic->ExpectingMessage(linkLayerTimeout); expmsg != MessageReady)
|
||||||
|
return expmsg;
|
||||||
|
if (logic->rsp.paramCode == ResponseMsgParamCodes::Accepted) {
|
||||||
|
// Button was accepted, decrement the retry.
|
||||||
|
mmu2.DecrementRetryAttempts();
|
||||||
|
}
|
||||||
|
SendFINDAQuery();
|
||||||
|
} break;
|
||||||
default:
|
default:
|
||||||
return ProtocolError;
|
return ProtocolError;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue