1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace automation_node 7 { 8 // clang-format off 9 10 enum class NodeState{ 11 Invalid, 12 Idle, 13 Done, 14 Waiting, 15 ConditionStop, 16 ErrorStop, 17 Running, 18 }; 19 20 enum class NodeType{ 21 Invalid, 22 MotionPosition, 23 MotionVelocity, 24 MotionPositionGroup, 25 PID, 26 Simple, 27 }; 28 29 enum class MotionProfileType{ 30 Invalid, 31 Trapezoidal, 32 SCurve, 33 None, 34 }; 35 36 enum class MotionAxisType{ 37 Invalid, 38 X, 39 Y, 40 Z, 41 TwoAxis, 42 ThreeAxis, 43 }; 44 45 NLOHMANN_JSON_SERIALIZE_ENUM(NodeState, { 46 {NodeState::Invalid, "Invalid"}, 47 {NodeState::Idle, "Idle"}, 48 {NodeState::Done, "Done"}, 49 {NodeState::Waiting, "Waiting"}, 50 {NodeState::ConditionStop, "ConditionStop"}, 51 {NodeState::ErrorStop, "ErrorStop"}, 52 {NodeState::Running, "Running"}, 53 }); 54 55 NLOHMANN_JSON_SERIALIZE_ENUM(NodeType, { 56 {NodeType::Invalid, "Invalid"}, 57 {NodeType::MotionPosition, "MotionPosition"}, 58 {NodeType::MotionVelocity, "MotionVelocity"}, 59 {NodeType::MotionPositionGroup, "MotionPositionGroup"}, 60 {NodeType::PID, "PID"}, 61 {NodeType::Simple, "Simple"}, 62 }); 63 64 NLOHMANN_JSON_SERIALIZE_ENUM(MotionProfileType, { 65 {MotionProfileType::Invalid, "Invalid"}, 66 {MotionProfileType::Trapezoidal, "Trapezoidal"}, 67 {MotionProfileType::SCurve, "SCurve"}, 68 {MotionProfileType::None, "None"}, 69 }); 70 71 NLOHMANN_JSON_SERIALIZE_ENUM(MotionAxisType, { 72 {MotionAxisType::Invalid, "Invalid"}, 73 {MotionAxisType::X, "X"}, 74 {MotionAxisType::Y, "Y"}, 75 {MotionAxisType::Z, "Z"}, 76 {MotionAxisType::TwoAxis, "TwoAxis"}, 77 {MotionAxisType::ThreeAxis, "ThreeAxis"}, 78 }); 79 80 } 81 // clang-format on 82