41 lines
1001 B
C++
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
|