35 lines
915 B
C++
35 lines
915 B
C++
#ifndef CMVR_ES_AUBO_MOTION_RESULT_H
|
|
#define CMVR_ES_AUBO_MOTION_RESULT_H
|
|
|
|
namespace cmvr::device::aubo_internal {
|
|
|
|
enum class MotionCommandOutcome {
|
|
CompletedWithoutMotion,
|
|
CompletedAfterMotion,
|
|
SubmitFailed,
|
|
CompletionFailed,
|
|
};
|
|
|
|
template <typename WaitForCompletion>
|
|
MotionCommandOutcome resolveMotionCommand(
|
|
const int return_code,
|
|
const int success_code,
|
|
const int request_ignore_code,
|
|
WaitForCompletion&& wait_for_completion)
|
|
{
|
|
if (return_code == request_ignore_code) {
|
|
return MotionCommandOutcome::CompletedWithoutMotion;
|
|
}
|
|
if (return_code != success_code) {
|
|
return MotionCommandOutcome::SubmitFailed;
|
|
}
|
|
if (wait_for_completion() != 0) {
|
|
return MotionCommandOutcome::CompletionFailed;
|
|
}
|
|
return MotionCommandOutcome::CompletedAfterMotion;
|
|
}
|
|
|
|
} // namespace cmvr::device::aubo_internal
|
|
|
|
#endif // CMVR_ES_AUBO_MOTION_RESULT_H
|