1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace power_distribution 7 { 8 // clang-format off 9 10 enum class PowerEquipmentType{ 11 Invalid, 12 RackPDU, 13 FloorPDU, 14 ManualTransferSwitch, 15 AutomaticTransferSwitch, 16 Switchgear, 17 PowerShelf, 18 Bus, 19 BatteryShelf, 20 }; 21 22 enum class TransferSensitivityType{ 23 Invalid, 24 High, 25 Medium, 26 Low, 27 }; 28 29 enum class ExportType{ 30 Invalid, 31 Clone, 32 Replacement, 33 }; 34 35 enum class Component{ 36 Invalid, 37 All, 38 Manager, 39 ManagerAccounts, 40 PowerDistribution, 41 }; 42 43 enum class ExportSecurity{ 44 Invalid, 45 IncludeSensitiveData, 46 HashedDataOnly, 47 ExcludeSensitiveData, 48 }; 49 50 NLOHMANN_JSON_SERIALIZE_ENUM(PowerEquipmentType, { 51 {PowerEquipmentType::Invalid, "Invalid"}, 52 {PowerEquipmentType::RackPDU, "RackPDU"}, 53 {PowerEquipmentType::FloorPDU, "FloorPDU"}, 54 {PowerEquipmentType::ManualTransferSwitch, "ManualTransferSwitch"}, 55 {PowerEquipmentType::AutomaticTransferSwitch, "AutomaticTransferSwitch"}, 56 {PowerEquipmentType::Switchgear, "Switchgear"}, 57 {PowerEquipmentType::PowerShelf, "PowerShelf"}, 58 {PowerEquipmentType::Bus, "Bus"}, 59 {PowerEquipmentType::BatteryShelf, "BatteryShelf"}, 60 }); 61 62 NLOHMANN_JSON_SERIALIZE_ENUM(TransferSensitivityType, { 63 {TransferSensitivityType::Invalid, "Invalid"}, 64 {TransferSensitivityType::High, "High"}, 65 {TransferSensitivityType::Medium, "Medium"}, 66 {TransferSensitivityType::Low, "Low"}, 67 }); 68 69 NLOHMANN_JSON_SERIALIZE_ENUM(ExportType, { 70 {ExportType::Invalid, "Invalid"}, 71 {ExportType::Clone, "Clone"}, 72 {ExportType::Replacement, "Replacement"}, 73 }); 74 75 NLOHMANN_JSON_SERIALIZE_ENUM(Component, { 76 {Component::Invalid, "Invalid"}, 77 {Component::All, "All"}, 78 {Component::Manager, "Manager"}, 79 {Component::ManagerAccounts, "ManagerAccounts"}, 80 {Component::PowerDistribution, "PowerDistribution"}, 81 }); 82 83 NLOHMANN_JSON_SERIALIZE_ENUM(ExportSecurity, { 84 {ExportSecurity::Invalid, "Invalid"}, 85 {ExportSecurity::IncludeSensitiveData, "IncludeSensitiveData"}, 86 {ExportSecurity::HashedDataOnly, "HashedDataOnly"}, 87 {ExportSecurity::ExcludeSensitiveData, "ExcludeSensitiveData"}, 88 }); 89 90 } 91 // clang-format on 92