1853c0dc5SEd Tanous #pragma once 2853c0dc5SEd Tanous #include <nlohmann/json.hpp> 3853c0dc5SEd Tanous 4853c0dc5SEd Tanous namespace control 5853c0dc5SEd Tanous { 6853c0dc5SEd Tanous // clang-format off 7853c0dc5SEd Tanous 8853c0dc5SEd Tanous enum class ControlType{ 9853c0dc5SEd Tanous Invalid, 10853c0dc5SEd Tanous Temperature, 11853c0dc5SEd Tanous Power, 12853c0dc5SEd Tanous Frequency, 13853c0dc5SEd Tanous FrequencyMHz, 14853c0dc5SEd Tanous Pressure, 15f263e09cSEd Tanous PressurekPa, 16f263e09cSEd Tanous Valve, 17*2ae81db9SGunnar Mills Percent, 18*2ae81db9SGunnar Mills DutyCycle, 19853c0dc5SEd Tanous }; 20853c0dc5SEd Tanous 21853c0dc5SEd Tanous enum class SetPointType{ 22853c0dc5SEd Tanous Invalid, 23853c0dc5SEd Tanous Single, 24853c0dc5SEd Tanous Range, 25853c0dc5SEd Tanous }; 26853c0dc5SEd Tanous 27853c0dc5SEd Tanous enum class ControlMode{ 28853c0dc5SEd Tanous Invalid, 29853c0dc5SEd Tanous Automatic, 30853c0dc5SEd Tanous Override, 31853c0dc5SEd Tanous Manual, 32853c0dc5SEd Tanous Disabled, 33853c0dc5SEd Tanous }; 34853c0dc5SEd Tanous 35853c0dc5SEd Tanous enum class ImplementationType{ 36853c0dc5SEd Tanous Invalid, 37853c0dc5SEd Tanous Programmable, 38853c0dc5SEd Tanous Direct, 39853c0dc5SEd Tanous Monitored, 40853c0dc5SEd Tanous }; 41853c0dc5SEd Tanous 42853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ControlType, { 43853c0dc5SEd Tanous {ControlType::Invalid, "Invalid"}, 44853c0dc5SEd Tanous {ControlType::Temperature, "Temperature"}, 45853c0dc5SEd Tanous {ControlType::Power, "Power"}, 46853c0dc5SEd Tanous {ControlType::Frequency, "Frequency"}, 47853c0dc5SEd Tanous {ControlType::FrequencyMHz, "FrequencyMHz"}, 48853c0dc5SEd Tanous {ControlType::Pressure, "Pressure"}, 49f263e09cSEd Tanous {ControlType::PressurekPa, "PressurekPa"}, 50f263e09cSEd Tanous {ControlType::Valve, "Valve"}, 51*2ae81db9SGunnar Mills {ControlType::Percent, "Percent"}, 52*2ae81db9SGunnar Mills {ControlType::DutyCycle, "DutyCycle"}, 53853c0dc5SEd Tanous }); 54853c0dc5SEd Tanous 55853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SetPointType, { 56853c0dc5SEd Tanous {SetPointType::Invalid, "Invalid"}, 57853c0dc5SEd Tanous {SetPointType::Single, "Single"}, 58853c0dc5SEd Tanous {SetPointType::Range, "Range"}, 59853c0dc5SEd Tanous }); 60853c0dc5SEd Tanous 61853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ControlMode, { 62853c0dc5SEd Tanous {ControlMode::Invalid, "Invalid"}, 63853c0dc5SEd Tanous {ControlMode::Automatic, "Automatic"}, 64853c0dc5SEd Tanous {ControlMode::Override, "Override"}, 65853c0dc5SEd Tanous {ControlMode::Manual, "Manual"}, 66853c0dc5SEd Tanous {ControlMode::Disabled, "Disabled"}, 67853c0dc5SEd Tanous }); 68853c0dc5SEd Tanous 69853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ImplementationType, { 70853c0dc5SEd Tanous {ImplementationType::Invalid, "Invalid"}, 71853c0dc5SEd Tanous {ImplementationType::Programmable, "Programmable"}, 72853c0dc5SEd Tanous {ImplementationType::Direct, "Direct"}, 73853c0dc5SEd Tanous {ImplementationType::Monitored, "Monitored"}, 74853c0dc5SEd Tanous }); 75853c0dc5SEd Tanous 76853c0dc5SEd Tanous } 77853c0dc5SEd Tanous // clang-format on 78