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