1 #pragma once
2 #include <nlohmann/json.hpp>
3 
4 namespace control
5 {
6 // clang-format off
7 
8 enum class ControlType{
9     Invalid,
10     Temperature,
11     Power,
12     Frequency,
13     FrequencyMHz,
14     Pressure,
15     PressurekPa,
16     Valve,
17 };
18 
19 enum class SetPointType{
20     Invalid,
21     Single,
22     Range,
23 };
24 
25 enum class ControlMode{
26     Invalid,
27     Automatic,
28     Override,
29     Manual,
30     Disabled,
31 };
32 
33 enum class ImplementationType{
34     Invalid,
35     Programmable,
36     Direct,
37     Monitored,
38 };
39 
40 NLOHMANN_JSON_SERIALIZE_ENUM(ControlType, {
41     {ControlType::Invalid, "Invalid"},
42     {ControlType::Temperature, "Temperature"},
43     {ControlType::Power, "Power"},
44     {ControlType::Frequency, "Frequency"},
45     {ControlType::FrequencyMHz, "FrequencyMHz"},
46     {ControlType::Pressure, "Pressure"},
47     {ControlType::PressurekPa, "PressurekPa"},
48     {ControlType::Valve, "Valve"},
49 });
50 
51 NLOHMANN_JSON_SERIALIZE_ENUM(SetPointType, {
52     {SetPointType::Invalid, "Invalid"},
53     {SetPointType::Single, "Single"},
54     {SetPointType::Range, "Range"},
55 });
56 
57 NLOHMANN_JSON_SERIALIZE_ENUM(ControlMode, {
58     {ControlMode::Invalid, "Invalid"},
59     {ControlMode::Automatic, "Automatic"},
60     {ControlMode::Override, "Override"},
61     {ControlMode::Manual, "Manual"},
62     {ControlMode::Disabled, "Disabled"},
63 });
64 
65 NLOHMANN_JSON_SERIALIZE_ENUM(ImplementationType, {
66     {ImplementationType::Invalid, "Invalid"},
67     {ImplementationType::Programmable, "Programmable"},
68     {ImplementationType::Direct, "Direct"},
69     {ImplementationType::Monitored, "Monitored"},
70 });
71 
72 }
73 // clang-format on
74