1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace outlet 7 { 8 // clang-format off 9 10 enum class PowerState{ 11 Invalid, 12 On, 13 Off, 14 PowerCycle, 15 }; 16 17 enum class ReceptacleType{ 18 Invalid, 19 NEMA_5_15R, 20 NEMA_5_20R, 21 NEMA_L5_20R, 22 NEMA_L5_30R, 23 NEMA_L6_20R, 24 NEMA_L6_30R, 25 IEC_60320_C13, 26 IEC_60320_C19, 27 CEE_7_Type_E, 28 CEE_7_Type_F, 29 SEV_1011_TYPE_12, 30 SEV_1011_TYPE_23, 31 BS_1363_Type_G, 32 BusConnection, 33 }; 34 35 enum class VoltageType{ 36 Invalid, 37 AC, 38 DC, 39 }; 40 41 NLOHMANN_JSON_SERIALIZE_ENUM(PowerState, { 42 {PowerState::Invalid, "Invalid"}, 43 {PowerState::On, "On"}, 44 {PowerState::Off, "Off"}, 45 {PowerState::PowerCycle, "PowerCycle"}, 46 }); 47 48 NLOHMANN_JSON_SERIALIZE_ENUM(ReceptacleType, { 49 {ReceptacleType::Invalid, "Invalid"}, 50 {ReceptacleType::NEMA_5_15R, "NEMA_5_15R"}, 51 {ReceptacleType::NEMA_5_20R, "NEMA_5_20R"}, 52 {ReceptacleType::NEMA_L5_20R, "NEMA_L5_20R"}, 53 {ReceptacleType::NEMA_L5_30R, "NEMA_L5_30R"}, 54 {ReceptacleType::NEMA_L6_20R, "NEMA_L6_20R"}, 55 {ReceptacleType::NEMA_L6_30R, "NEMA_L6_30R"}, 56 {ReceptacleType::IEC_60320_C13, "IEC_60320_C13"}, 57 {ReceptacleType::IEC_60320_C19, "IEC_60320_C19"}, 58 {ReceptacleType::CEE_7_Type_E, "CEE_7_Type_E"}, 59 {ReceptacleType::CEE_7_Type_F, "CEE_7_Type_F"}, 60 {ReceptacleType::SEV_1011_TYPE_12, "SEV_1011_TYPE_12"}, 61 {ReceptacleType::SEV_1011_TYPE_23, "SEV_1011_TYPE_23"}, 62 {ReceptacleType::BS_1363_Type_G, "BS_1363_Type_G"}, 63 {ReceptacleType::BusConnection, "BusConnection"}, 64 }); 65 66 NLOHMANN_JSON_SERIALIZE_ENUM(VoltageType, { 67 {VoltageType::Invalid, "Invalid"}, 68 {VoltageType::AC, "AC"}, 69 {VoltageType::DC, "DC"}, 70 }); 71 72 } 73 // clang-format on 74