1*40e9b92eSEd Tanous // SPDX-License-Identifier: Apache-2.0 2*40e9b92eSEd Tanous // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3853c0dc5SEd Tanous #pragma once 4853c0dc5SEd Tanous #include <nlohmann/json.hpp> 5853c0dc5SEd Tanous 6853c0dc5SEd Tanous namespace control 7853c0dc5SEd Tanous { 8853c0dc5SEd Tanous // clang-format off 9853c0dc5SEd Tanous 10853c0dc5SEd Tanous enum class ControlType{ 11853c0dc5SEd Tanous Invalid, 12853c0dc5SEd Tanous Temperature, 13853c0dc5SEd Tanous Power, 14853c0dc5SEd Tanous Frequency, 15853c0dc5SEd Tanous FrequencyMHz, 16853c0dc5SEd Tanous Pressure, 17f263e09cSEd Tanous PressurekPa, 18f263e09cSEd Tanous Valve, 192ae81db9SGunnar Mills Percent, 202ae81db9SGunnar Mills DutyCycle, 21853c0dc5SEd Tanous }; 22853c0dc5SEd Tanous 23853c0dc5SEd Tanous enum class SetPointType{ 24853c0dc5SEd Tanous Invalid, 25853c0dc5SEd Tanous Single, 26853c0dc5SEd Tanous Range, 27853c0dc5SEd Tanous }; 28853c0dc5SEd Tanous 29853c0dc5SEd Tanous enum class ControlMode{ 30853c0dc5SEd Tanous Invalid, 31853c0dc5SEd Tanous Automatic, 32853c0dc5SEd Tanous Override, 33853c0dc5SEd Tanous Manual, 34853c0dc5SEd Tanous Disabled, 35853c0dc5SEd Tanous }; 36853c0dc5SEd Tanous 37853c0dc5SEd Tanous enum class ImplementationType{ 38853c0dc5SEd Tanous Invalid, 39853c0dc5SEd Tanous Programmable, 40853c0dc5SEd Tanous Direct, 41853c0dc5SEd Tanous Monitored, 42853c0dc5SEd Tanous }; 43853c0dc5SEd Tanous 44853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ControlType, { 45853c0dc5SEd Tanous {ControlType::Invalid, "Invalid"}, 46853c0dc5SEd Tanous {ControlType::Temperature, "Temperature"}, 47853c0dc5SEd Tanous {ControlType::Power, "Power"}, 48853c0dc5SEd Tanous {ControlType::Frequency, "Frequency"}, 49853c0dc5SEd Tanous {ControlType::FrequencyMHz, "FrequencyMHz"}, 50853c0dc5SEd Tanous {ControlType::Pressure, "Pressure"}, 51f263e09cSEd Tanous {ControlType::PressurekPa, "PressurekPa"}, 52f263e09cSEd Tanous {ControlType::Valve, "Valve"}, 532ae81db9SGunnar Mills {ControlType::Percent, "Percent"}, 542ae81db9SGunnar Mills {ControlType::DutyCycle, "DutyCycle"}, 55853c0dc5SEd Tanous }); 56853c0dc5SEd Tanous 57853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SetPointType, { 58853c0dc5SEd Tanous {SetPointType::Invalid, "Invalid"}, 59853c0dc5SEd Tanous {SetPointType::Single, "Single"}, 60853c0dc5SEd Tanous {SetPointType::Range, "Range"}, 61853c0dc5SEd Tanous }); 62853c0dc5SEd Tanous 63853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ControlMode, { 64853c0dc5SEd Tanous {ControlMode::Invalid, "Invalid"}, 65853c0dc5SEd Tanous {ControlMode::Automatic, "Automatic"}, 66853c0dc5SEd Tanous {ControlMode::Override, "Override"}, 67853c0dc5SEd Tanous {ControlMode::Manual, "Manual"}, 68853c0dc5SEd Tanous {ControlMode::Disabled, "Disabled"}, 69853c0dc5SEd Tanous }); 70853c0dc5SEd Tanous 71853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ImplementationType, { 72853c0dc5SEd Tanous {ImplementationType::Invalid, "Invalid"}, 73853c0dc5SEd Tanous {ImplementationType::Programmable, "Programmable"}, 74853c0dc5SEd Tanous {ImplementationType::Direct, "Direct"}, 75853c0dc5SEd Tanous {ImplementationType::Monitored, "Monitored"}, 76853c0dc5SEd Tanous }); 77853c0dc5SEd Tanous 78853c0dc5SEd Tanous } 79853c0dc5SEd Tanous // clang-format on 80