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 circuit 7853c0dc5SEd Tanous { 8853c0dc5SEd Tanous // clang-format off 9853c0dc5SEd Tanous 10853c0dc5SEd Tanous enum class PowerState{ 11853c0dc5SEd Tanous Invalid, 12853c0dc5SEd Tanous On, 13853c0dc5SEd Tanous Off, 14853c0dc5SEd Tanous PowerCycle, 15853c0dc5SEd Tanous }; 16853c0dc5SEd Tanous 17853c0dc5SEd Tanous enum class BreakerStates{ 18853c0dc5SEd Tanous Invalid, 19853c0dc5SEd Tanous Normal, 20853c0dc5SEd Tanous Tripped, 21853c0dc5SEd Tanous Off, 22853c0dc5SEd Tanous }; 23853c0dc5SEd Tanous 24853c0dc5SEd Tanous enum class PowerRestorePolicyTypes{ 25853c0dc5SEd Tanous Invalid, 26853c0dc5SEd Tanous AlwaysOn, 27853c0dc5SEd Tanous AlwaysOff, 28853c0dc5SEd Tanous LastState, 29853c0dc5SEd Tanous }; 30853c0dc5SEd Tanous 31853c0dc5SEd Tanous enum class PhaseWiringType{ 32853c0dc5SEd Tanous Invalid, 33853c0dc5SEd Tanous OnePhase3Wire, 34853c0dc5SEd Tanous TwoPhase3Wire, 35853c0dc5SEd Tanous OneOrTwoPhase3Wire, 36853c0dc5SEd Tanous TwoPhase4Wire, 37853c0dc5SEd Tanous ThreePhase4Wire, 38853c0dc5SEd Tanous ThreePhase5Wire, 39853c0dc5SEd Tanous }; 40853c0dc5SEd Tanous 41853c0dc5SEd Tanous enum class NominalVoltageType{ 42853c0dc5SEd Tanous Invalid, 43853c0dc5SEd Tanous AC100To127V, 44853c0dc5SEd Tanous AC100To240V, 45853c0dc5SEd Tanous AC100To277V, 46853c0dc5SEd Tanous AC120V, 47853c0dc5SEd Tanous AC200To240V, 48853c0dc5SEd Tanous AC200To277V, 49853c0dc5SEd Tanous AC208V, 50853c0dc5SEd Tanous AC230V, 51853c0dc5SEd Tanous AC240V, 52853c0dc5SEd Tanous AC240AndDC380V, 53853c0dc5SEd Tanous AC277V, 54853c0dc5SEd Tanous AC277AndDC380V, 55853c0dc5SEd Tanous AC400V, 56853c0dc5SEd Tanous AC480V, 57853c0dc5SEd Tanous DC48V, 58853c0dc5SEd Tanous DC240V, 59853c0dc5SEd Tanous DC380V, 60853c0dc5SEd Tanous DCNeg48V, 61853c0dc5SEd Tanous DC16V, 62853c0dc5SEd Tanous DC12V, 63853c0dc5SEd Tanous DC9V, 64853c0dc5SEd Tanous DC5V, 65853c0dc5SEd Tanous DC3_3V, 66853c0dc5SEd Tanous DC1_8V, 67853c0dc5SEd Tanous }; 68853c0dc5SEd Tanous 69853c0dc5SEd Tanous enum class PlugType{ 70853c0dc5SEd Tanous Invalid, 71853c0dc5SEd Tanous NEMA_5_15P, 72853c0dc5SEd Tanous NEMA_L5_15P, 73853c0dc5SEd Tanous NEMA_5_20P, 74853c0dc5SEd Tanous NEMA_L5_20P, 75853c0dc5SEd Tanous NEMA_L5_30P, 76853c0dc5SEd Tanous NEMA_6_15P, 77853c0dc5SEd Tanous NEMA_L6_15P, 78853c0dc5SEd Tanous NEMA_6_20P, 79853c0dc5SEd Tanous NEMA_L6_20P, 80853c0dc5SEd Tanous NEMA_L6_30P, 81853c0dc5SEd Tanous NEMA_L14_20P, 82853c0dc5SEd Tanous NEMA_L14_30P, 83853c0dc5SEd Tanous NEMA_L15_20P, 84853c0dc5SEd Tanous NEMA_L15_30P, 85853c0dc5SEd Tanous NEMA_L21_20P, 86853c0dc5SEd Tanous NEMA_L21_30P, 87853c0dc5SEd Tanous NEMA_L22_20P, 88853c0dc5SEd Tanous NEMA_L22_30P, 89853c0dc5SEd Tanous California_CS8265, 90853c0dc5SEd Tanous California_CS8365, 91853c0dc5SEd Tanous IEC_60320_C14, 92853c0dc5SEd Tanous IEC_60320_C20, 93853c0dc5SEd Tanous IEC_60309_316P6, 94853c0dc5SEd Tanous IEC_60309_332P6, 95853c0dc5SEd Tanous IEC_60309_363P6, 96853c0dc5SEd Tanous IEC_60309_516P6, 97853c0dc5SEd Tanous IEC_60309_532P6, 98853c0dc5SEd Tanous IEC_60309_563P6, 99853c0dc5SEd Tanous IEC_60309_460P9, 100853c0dc5SEd Tanous IEC_60309_560P9, 101853c0dc5SEd Tanous Field_208V_3P4W_60A, 102853c0dc5SEd Tanous Field_400V_3P5W_32A, 103853c0dc5SEd Tanous }; 104853c0dc5SEd Tanous 105853c0dc5SEd Tanous enum class CircuitType{ 106853c0dc5SEd Tanous Invalid, 107853c0dc5SEd Tanous Mains, 108853c0dc5SEd Tanous Branch, 109853c0dc5SEd Tanous Subfeed, 110853c0dc5SEd Tanous Feeder, 111853c0dc5SEd Tanous Bus, 112853c0dc5SEd Tanous }; 113853c0dc5SEd Tanous 114853c0dc5SEd Tanous enum class VoltageType{ 115853c0dc5SEd Tanous Invalid, 116853c0dc5SEd Tanous AC, 117853c0dc5SEd Tanous DC, 118853c0dc5SEd Tanous }; 119853c0dc5SEd Tanous 120853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(PowerState, { 121853c0dc5SEd Tanous {PowerState::Invalid, "Invalid"}, 122853c0dc5SEd Tanous {PowerState::On, "On"}, 123853c0dc5SEd Tanous {PowerState::Off, "Off"}, 124853c0dc5SEd Tanous {PowerState::PowerCycle, "PowerCycle"}, 125853c0dc5SEd Tanous }); 126853c0dc5SEd Tanous 127853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(BreakerStates, { 128853c0dc5SEd Tanous {BreakerStates::Invalid, "Invalid"}, 129853c0dc5SEd Tanous {BreakerStates::Normal, "Normal"}, 130853c0dc5SEd Tanous {BreakerStates::Tripped, "Tripped"}, 131853c0dc5SEd Tanous {BreakerStates::Off, "Off"}, 132853c0dc5SEd Tanous }); 133853c0dc5SEd Tanous 134853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(PowerRestorePolicyTypes, { 135853c0dc5SEd Tanous {PowerRestorePolicyTypes::Invalid, "Invalid"}, 136853c0dc5SEd Tanous {PowerRestorePolicyTypes::AlwaysOn, "AlwaysOn"}, 137853c0dc5SEd Tanous {PowerRestorePolicyTypes::AlwaysOff, "AlwaysOff"}, 138853c0dc5SEd Tanous {PowerRestorePolicyTypes::LastState, "LastState"}, 139853c0dc5SEd Tanous }); 140853c0dc5SEd Tanous 141853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(PhaseWiringType, { 142853c0dc5SEd Tanous {PhaseWiringType::Invalid, "Invalid"}, 143853c0dc5SEd Tanous {PhaseWiringType::OnePhase3Wire, "OnePhase3Wire"}, 144853c0dc5SEd Tanous {PhaseWiringType::TwoPhase3Wire, "TwoPhase3Wire"}, 145853c0dc5SEd Tanous {PhaseWiringType::OneOrTwoPhase3Wire, "OneOrTwoPhase3Wire"}, 146853c0dc5SEd Tanous {PhaseWiringType::TwoPhase4Wire, "TwoPhase4Wire"}, 147853c0dc5SEd Tanous {PhaseWiringType::ThreePhase4Wire, "ThreePhase4Wire"}, 148853c0dc5SEd Tanous {PhaseWiringType::ThreePhase5Wire, "ThreePhase5Wire"}, 149853c0dc5SEd Tanous }); 150853c0dc5SEd Tanous 151853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(NominalVoltageType, { 152853c0dc5SEd Tanous {NominalVoltageType::Invalid, "Invalid"}, 153853c0dc5SEd Tanous {NominalVoltageType::AC100To127V, "AC100To127V"}, 154853c0dc5SEd Tanous {NominalVoltageType::AC100To240V, "AC100To240V"}, 155853c0dc5SEd Tanous {NominalVoltageType::AC100To277V, "AC100To277V"}, 156853c0dc5SEd Tanous {NominalVoltageType::AC120V, "AC120V"}, 157853c0dc5SEd Tanous {NominalVoltageType::AC200To240V, "AC200To240V"}, 158853c0dc5SEd Tanous {NominalVoltageType::AC200To277V, "AC200To277V"}, 159853c0dc5SEd Tanous {NominalVoltageType::AC208V, "AC208V"}, 160853c0dc5SEd Tanous {NominalVoltageType::AC230V, "AC230V"}, 161853c0dc5SEd Tanous {NominalVoltageType::AC240V, "AC240V"}, 162853c0dc5SEd Tanous {NominalVoltageType::AC240AndDC380V, "AC240AndDC380V"}, 163853c0dc5SEd Tanous {NominalVoltageType::AC277V, "AC277V"}, 164853c0dc5SEd Tanous {NominalVoltageType::AC277AndDC380V, "AC277AndDC380V"}, 165853c0dc5SEd Tanous {NominalVoltageType::AC400V, "AC400V"}, 166853c0dc5SEd Tanous {NominalVoltageType::AC480V, "AC480V"}, 167853c0dc5SEd Tanous {NominalVoltageType::DC48V, "DC48V"}, 168853c0dc5SEd Tanous {NominalVoltageType::DC240V, "DC240V"}, 169853c0dc5SEd Tanous {NominalVoltageType::DC380V, "DC380V"}, 170853c0dc5SEd Tanous {NominalVoltageType::DCNeg48V, "DCNeg48V"}, 171853c0dc5SEd Tanous {NominalVoltageType::DC16V, "DC16V"}, 172853c0dc5SEd Tanous {NominalVoltageType::DC12V, "DC12V"}, 173853c0dc5SEd Tanous {NominalVoltageType::DC9V, "DC9V"}, 174853c0dc5SEd Tanous {NominalVoltageType::DC5V, "DC5V"}, 175853c0dc5SEd Tanous {NominalVoltageType::DC3_3V, "DC3_3V"}, 176853c0dc5SEd Tanous {NominalVoltageType::DC1_8V, "DC1_8V"}, 177853c0dc5SEd Tanous }); 178853c0dc5SEd Tanous 179853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(PlugType, { 180853c0dc5SEd Tanous {PlugType::Invalid, "Invalid"}, 181853c0dc5SEd Tanous {PlugType::NEMA_5_15P, "NEMA_5_15P"}, 182853c0dc5SEd Tanous {PlugType::NEMA_L5_15P, "NEMA_L5_15P"}, 183853c0dc5SEd Tanous {PlugType::NEMA_5_20P, "NEMA_5_20P"}, 184853c0dc5SEd Tanous {PlugType::NEMA_L5_20P, "NEMA_L5_20P"}, 185853c0dc5SEd Tanous {PlugType::NEMA_L5_30P, "NEMA_L5_30P"}, 186853c0dc5SEd Tanous {PlugType::NEMA_6_15P, "NEMA_6_15P"}, 187853c0dc5SEd Tanous {PlugType::NEMA_L6_15P, "NEMA_L6_15P"}, 188853c0dc5SEd Tanous {PlugType::NEMA_6_20P, "NEMA_6_20P"}, 189853c0dc5SEd Tanous {PlugType::NEMA_L6_20P, "NEMA_L6_20P"}, 190853c0dc5SEd Tanous {PlugType::NEMA_L6_30P, "NEMA_L6_30P"}, 191853c0dc5SEd Tanous {PlugType::NEMA_L14_20P, "NEMA_L14_20P"}, 192853c0dc5SEd Tanous {PlugType::NEMA_L14_30P, "NEMA_L14_30P"}, 193853c0dc5SEd Tanous {PlugType::NEMA_L15_20P, "NEMA_L15_20P"}, 194853c0dc5SEd Tanous {PlugType::NEMA_L15_30P, "NEMA_L15_30P"}, 195853c0dc5SEd Tanous {PlugType::NEMA_L21_20P, "NEMA_L21_20P"}, 196853c0dc5SEd Tanous {PlugType::NEMA_L21_30P, "NEMA_L21_30P"}, 197853c0dc5SEd Tanous {PlugType::NEMA_L22_20P, "NEMA_L22_20P"}, 198853c0dc5SEd Tanous {PlugType::NEMA_L22_30P, "NEMA_L22_30P"}, 199853c0dc5SEd Tanous {PlugType::California_CS8265, "California_CS8265"}, 200853c0dc5SEd Tanous {PlugType::California_CS8365, "California_CS8365"}, 201853c0dc5SEd Tanous {PlugType::IEC_60320_C14, "IEC_60320_C14"}, 202853c0dc5SEd Tanous {PlugType::IEC_60320_C20, "IEC_60320_C20"}, 203853c0dc5SEd Tanous {PlugType::IEC_60309_316P6, "IEC_60309_316P6"}, 204853c0dc5SEd Tanous {PlugType::IEC_60309_332P6, "IEC_60309_332P6"}, 205853c0dc5SEd Tanous {PlugType::IEC_60309_363P6, "IEC_60309_363P6"}, 206853c0dc5SEd Tanous {PlugType::IEC_60309_516P6, "IEC_60309_516P6"}, 207853c0dc5SEd Tanous {PlugType::IEC_60309_532P6, "IEC_60309_532P6"}, 208853c0dc5SEd Tanous {PlugType::IEC_60309_563P6, "IEC_60309_563P6"}, 209853c0dc5SEd Tanous {PlugType::IEC_60309_460P9, "IEC_60309_460P9"}, 210853c0dc5SEd Tanous {PlugType::IEC_60309_560P9, "IEC_60309_560P9"}, 211853c0dc5SEd Tanous {PlugType::Field_208V_3P4W_60A, "Field_208V_3P4W_60A"}, 212853c0dc5SEd Tanous {PlugType::Field_400V_3P5W_32A, "Field_400V_3P5W_32A"}, 213853c0dc5SEd Tanous }); 214853c0dc5SEd Tanous 215853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(CircuitType, { 216853c0dc5SEd Tanous {CircuitType::Invalid, "Invalid"}, 217853c0dc5SEd Tanous {CircuitType::Mains, "Mains"}, 218853c0dc5SEd Tanous {CircuitType::Branch, "Branch"}, 219853c0dc5SEd Tanous {CircuitType::Subfeed, "Subfeed"}, 220853c0dc5SEd Tanous {CircuitType::Feeder, "Feeder"}, 221853c0dc5SEd Tanous {CircuitType::Bus, "Bus"}, 222853c0dc5SEd Tanous }); 223853c0dc5SEd Tanous 224853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(VoltageType, { 225853c0dc5SEd Tanous {VoltageType::Invalid, "Invalid"}, 226853c0dc5SEd Tanous {VoltageType::AC, "AC"}, 227853c0dc5SEd Tanous {VoltageType::DC, "DC"}, 228853c0dc5SEd Tanous }); 229853c0dc5SEd Tanous 230853c0dc5SEd Tanous } 231853c0dc5SEd Tanous // clang-format on 232