Prusa-Firmware-MMU/src/logic/move_selector.cpp

41 lines
1001 B
C++

/// @file
#include "move_selector.h"
#include "../modules/globals.h"
#include "../modules/selector.h"
#include "../debug.h"
namespace logic {
MoveSelector moveSelector;
void MoveSelector::Reset(uint8_t param) {
state = ProgressCode::MovingSelector;
if (ms::selector.MoveToSlot(param) != ms::Selector::OperationResult::Refused) {
// operation accepted
error = ErrorCode::RUNNING;
} else {
error = ErrorCode::HOMING_SELECTOR_FAILED; // @@TODO
}
}
bool MoveSelector::StepInner() {
switch (state) {
case ProgressCode::MovingSelector:
if (ms::selector.State() == ms::selector.Ready) {
state = ProgressCode::OK;
error = ErrorCode::OK;
}
break;
case ProgressCode::OK:
return true;
default: // we got into an unhandled state, better report it
state = ProgressCode::ERRInternal;
error = ErrorCode::INTERNAL;
return true;
}
return false;
}
} // namespace logic