1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace circuit 7 { 8 // clang-format off 9 10 enum class PowerState{ 11 Invalid, 12 On, 13 Off, 14 PowerCycle, 15 }; 16 17 enum class BreakerStates{ 18 Invalid, 19 Normal, 20 Tripped, 21 Off, 22 }; 23 24 enum class PowerRestorePolicyTypes{ 25 Invalid, 26 AlwaysOn, 27 AlwaysOff, 28 LastState, 29 }; 30 31 enum class PhaseWiringType{ 32 Invalid, 33 OnePhase3Wire, 34 TwoPhase3Wire, 35 OneOrTwoPhase3Wire, 36 TwoPhase4Wire, 37 ThreePhase4Wire, 38 ThreePhase5Wire, 39 }; 40 41 enum class NominalVoltageType{ 42 Invalid, 43 AC100To127V, 44 AC100To240V, 45 AC100To277V, 46 AC120V, 47 AC200To240V, 48 AC200To277V, 49 AC208V, 50 AC230V, 51 AC240V, 52 AC240AndDC380V, 53 AC277V, 54 AC277AndDC380V, 55 AC400V, 56 AC480V, 57 DC48V, 58 DC240V, 59 DC380V, 60 DCNeg48V, 61 DC16V, 62 DC12V, 63 DC9V, 64 DC5V, 65 DC3_3V, 66 DC1_8V, 67 }; 68 69 enum class PlugType{ 70 Invalid, 71 NEMA_5_15P, 72 NEMA_L5_15P, 73 NEMA_5_20P, 74 NEMA_L5_20P, 75 NEMA_L5_30P, 76 NEMA_6_15P, 77 NEMA_L6_15P, 78 NEMA_6_20P, 79 NEMA_L6_20P, 80 NEMA_L6_30P, 81 NEMA_L14_20P, 82 NEMA_L14_30P, 83 NEMA_L15_20P, 84 NEMA_L15_30P, 85 NEMA_L21_20P, 86 NEMA_L21_30P, 87 NEMA_L22_20P, 88 NEMA_L22_30P, 89 California_CS8265, 90 California_CS8365, 91 IEC_60320_C14, 92 IEC_60320_C20, 93 IEC_60309_316P6, 94 IEC_60309_332P6, 95 IEC_60309_363P6, 96 IEC_60309_516P6, 97 IEC_60309_532P6, 98 IEC_60309_563P6, 99 IEC_60309_460P9, 100 IEC_60309_560P9, 101 Field_208V_3P4W_60A, 102 Field_400V_3P5W_32A, 103 }; 104 105 enum class CircuitType{ 106 Invalid, 107 Mains, 108 Branch, 109 Subfeed, 110 Feeder, 111 Bus, 112 }; 113 114 enum class VoltageType{ 115 Invalid, 116 AC, 117 DC, 118 }; 119 120 NLOHMANN_JSON_SERIALIZE_ENUM(PowerState, { 121 {PowerState::Invalid, "Invalid"}, 122 {PowerState::On, "On"}, 123 {PowerState::Off, "Off"}, 124 {PowerState::PowerCycle, "PowerCycle"}, 125 }); 126 127 NLOHMANN_JSON_SERIALIZE_ENUM(BreakerStates, { 128 {BreakerStates::Invalid, "Invalid"}, 129 {BreakerStates::Normal, "Normal"}, 130 {BreakerStates::Tripped, "Tripped"}, 131 {BreakerStates::Off, "Off"}, 132 }); 133 134 NLOHMANN_JSON_SERIALIZE_ENUM(PowerRestorePolicyTypes, { 135 {PowerRestorePolicyTypes::Invalid, "Invalid"}, 136 {PowerRestorePolicyTypes::AlwaysOn, "AlwaysOn"}, 137 {PowerRestorePolicyTypes::AlwaysOff, "AlwaysOff"}, 138 {PowerRestorePolicyTypes::LastState, "LastState"}, 139 }); 140 141 NLOHMANN_JSON_SERIALIZE_ENUM(PhaseWiringType, { 142 {PhaseWiringType::Invalid, "Invalid"}, 143 {PhaseWiringType::OnePhase3Wire, "OnePhase3Wire"}, 144 {PhaseWiringType::TwoPhase3Wire, "TwoPhase3Wire"}, 145 {PhaseWiringType::OneOrTwoPhase3Wire, "OneOrTwoPhase3Wire"}, 146 {PhaseWiringType::TwoPhase4Wire, "TwoPhase4Wire"}, 147 {PhaseWiringType::ThreePhase4Wire, "ThreePhase4Wire"}, 148 {PhaseWiringType::ThreePhase5Wire, "ThreePhase5Wire"}, 149 }); 150 151 NLOHMANN_JSON_SERIALIZE_ENUM(NominalVoltageType, { 152 {NominalVoltageType::Invalid, "Invalid"}, 153 {NominalVoltageType::AC100To127V, "AC100To127V"}, 154 {NominalVoltageType::AC100To240V, "AC100To240V"}, 155 {NominalVoltageType::AC100To277V, "AC100To277V"}, 156 {NominalVoltageType::AC120V, "AC120V"}, 157 {NominalVoltageType::AC200To240V, "AC200To240V"}, 158 {NominalVoltageType::AC200To277V, "AC200To277V"}, 159 {NominalVoltageType::AC208V, "AC208V"}, 160 {NominalVoltageType::AC230V, "AC230V"}, 161 {NominalVoltageType::AC240V, "AC240V"}, 162 {NominalVoltageType::AC240AndDC380V, "AC240AndDC380V"}, 163 {NominalVoltageType::AC277V, "AC277V"}, 164 {NominalVoltageType::AC277AndDC380V, "AC277AndDC380V"}, 165 {NominalVoltageType::AC400V, "AC400V"}, 166 {NominalVoltageType::AC480V, "AC480V"}, 167 {NominalVoltageType::DC48V, "DC48V"}, 168 {NominalVoltageType::DC240V, "DC240V"}, 169 {NominalVoltageType::DC380V, "DC380V"}, 170 {NominalVoltageType::DCNeg48V, "DCNeg48V"}, 171 {NominalVoltageType::DC16V, "DC16V"}, 172 {NominalVoltageType::DC12V, "DC12V"}, 173 {NominalVoltageType::DC9V, "DC9V"}, 174 {NominalVoltageType::DC5V, "DC5V"}, 175 {NominalVoltageType::DC3_3V, "DC3_3V"}, 176 {NominalVoltageType::DC1_8V, "DC1_8V"}, 177 }); 178 179 NLOHMANN_JSON_SERIALIZE_ENUM(PlugType, { 180 {PlugType::Invalid, "Invalid"}, 181 {PlugType::NEMA_5_15P, "NEMA_5_15P"}, 182 {PlugType::NEMA_L5_15P, "NEMA_L5_15P"}, 183 {PlugType::NEMA_5_20P, "NEMA_5_20P"}, 184 {PlugType::NEMA_L5_20P, "NEMA_L5_20P"}, 185 {PlugType::NEMA_L5_30P, "NEMA_L5_30P"}, 186 {PlugType::NEMA_6_15P, "NEMA_6_15P"}, 187 {PlugType::NEMA_L6_15P, "NEMA_L6_15P"}, 188 {PlugType::NEMA_6_20P, "NEMA_6_20P"}, 189 {PlugType::NEMA_L6_20P, "NEMA_L6_20P"}, 190 {PlugType::NEMA_L6_30P, "NEMA_L6_30P"}, 191 {PlugType::NEMA_L14_20P, "NEMA_L14_20P"}, 192 {PlugType::NEMA_L14_30P, "NEMA_L14_30P"}, 193 {PlugType::NEMA_L15_20P, "NEMA_L15_20P"}, 194 {PlugType::NEMA_L15_30P, "NEMA_L15_30P"}, 195 {PlugType::NEMA_L21_20P, "NEMA_L21_20P"}, 196 {PlugType::NEMA_L21_30P, "NEMA_L21_30P"}, 197 {PlugType::NEMA_L22_20P, "NEMA_L22_20P"}, 198 {PlugType::NEMA_L22_30P, "NEMA_L22_30P"}, 199 {PlugType::California_CS8265, "California_CS8265"}, 200 {PlugType::California_CS8365, "California_CS8365"}, 201 {PlugType::IEC_60320_C14, "IEC_60320_C14"}, 202 {PlugType::IEC_60320_C20, "IEC_60320_C20"}, 203 {PlugType::IEC_60309_316P6, "IEC_60309_316P6"}, 204 {PlugType::IEC_60309_332P6, "IEC_60309_332P6"}, 205 {PlugType::IEC_60309_363P6, "IEC_60309_363P6"}, 206 {PlugType::IEC_60309_516P6, "IEC_60309_516P6"}, 207 {PlugType::IEC_60309_532P6, "IEC_60309_532P6"}, 208 {PlugType::IEC_60309_563P6, "IEC_60309_563P6"}, 209 {PlugType::IEC_60309_460P9, "IEC_60309_460P9"}, 210 {PlugType::IEC_60309_560P9, "IEC_60309_560P9"}, 211 {PlugType::Field_208V_3P4W_60A, "Field_208V_3P4W_60A"}, 212 {PlugType::Field_400V_3P5W_32A, "Field_400V_3P5W_32A"}, 213 }); 214 215 NLOHMANN_JSON_SERIALIZE_ENUM(CircuitType, { 216 {CircuitType::Invalid, "Invalid"}, 217 {CircuitType::Mains, "Mains"}, 218 {CircuitType::Branch, "Branch"}, 219 {CircuitType::Subfeed, "Subfeed"}, 220 {CircuitType::Feeder, "Feeder"}, 221 {CircuitType::Bus, "Bus"}, 222 }); 223 224 NLOHMANN_JSON_SERIALIZE_ENUM(VoltageType, { 225 {VoltageType::Invalid, "Invalid"}, 226 {VoltageType::AC, "AC"}, 227 {VoltageType::DC, "DC"}, 228 }); 229 230 } 231 // clang-format on 232