1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace chassis 7 { 8 // clang-format off 9 10 enum class ChassisType{ 11 Invalid, 12 Rack, 13 Blade, 14 Enclosure, 15 StandAlone, 16 RackMount, 17 Card, 18 Cartridge, 19 Row, 20 Pod, 21 Expansion, 22 Sidecar, 23 Zone, 24 Sled, 25 Shelf, 26 Drawer, 27 Module, 28 Component, 29 IPBasedDrive, 30 RackGroup, 31 StorageEnclosure, 32 ImmersionTank, 33 HeatExchanger, 34 PowerStrip, 35 Other, 36 }; 37 38 enum class IndicatorLED{ 39 Invalid, 40 Unknown, 41 Lit, 42 Blinking, 43 Off, 44 }; 45 46 enum class IntrusionSensor{ 47 Invalid, 48 Normal, 49 HardwareIntrusion, 50 TamperingDetected, 51 }; 52 53 enum class IntrusionSensorReArm{ 54 Invalid, 55 Manual, 56 Automatic, 57 }; 58 59 enum class EnvironmentalClass{ 60 Invalid, 61 A1, 62 A2, 63 A3, 64 A4, 65 }; 66 67 enum class ThermalDirection{ 68 Invalid, 69 FrontToBack, 70 BackToFront, 71 TopExhaust, 72 Sealed, 73 }; 74 75 enum class DoorState{ 76 Invalid, 77 Locked, 78 Closed, 79 LockedAndOpen, 80 Open, 81 }; 82 83 enum class RackUnits{ 84 Invalid, 85 OpenU, 86 EIA_310, 87 }; 88 89 enum class RackMountWidth{ 90 Invalid, 91 OpenU, 92 EIA_310, 93 EIA_310_Telco, 94 HalfWidth, 95 }; 96 97 NLOHMANN_JSON_SERIALIZE_ENUM(ChassisType, { 98 {ChassisType::Invalid, "Invalid"}, 99 {ChassisType::Rack, "Rack"}, 100 {ChassisType::Blade, "Blade"}, 101 {ChassisType::Enclosure, "Enclosure"}, 102 {ChassisType::StandAlone, "StandAlone"}, 103 {ChassisType::RackMount, "RackMount"}, 104 {ChassisType::Card, "Card"}, 105 {ChassisType::Cartridge, "Cartridge"}, 106 {ChassisType::Row, "Row"}, 107 {ChassisType::Pod, "Pod"}, 108 {ChassisType::Expansion, "Expansion"}, 109 {ChassisType::Sidecar, "Sidecar"}, 110 {ChassisType::Zone, "Zone"}, 111 {ChassisType::Sled, "Sled"}, 112 {ChassisType::Shelf, "Shelf"}, 113 {ChassisType::Drawer, "Drawer"}, 114 {ChassisType::Module, "Module"}, 115 {ChassisType::Component, "Component"}, 116 {ChassisType::IPBasedDrive, "IPBasedDrive"}, 117 {ChassisType::RackGroup, "RackGroup"}, 118 {ChassisType::StorageEnclosure, "StorageEnclosure"}, 119 {ChassisType::ImmersionTank, "ImmersionTank"}, 120 {ChassisType::HeatExchanger, "HeatExchanger"}, 121 {ChassisType::PowerStrip, "PowerStrip"}, 122 {ChassisType::Other, "Other"}, 123 }); 124 125 NLOHMANN_JSON_SERIALIZE_ENUM(IndicatorLED, { 126 {IndicatorLED::Invalid, "Invalid"}, 127 {IndicatorLED::Unknown, "Unknown"}, 128 {IndicatorLED::Lit, "Lit"}, 129 {IndicatorLED::Blinking, "Blinking"}, 130 {IndicatorLED::Off, "Off"}, 131 }); 132 133 NLOHMANN_JSON_SERIALIZE_ENUM(IntrusionSensor, { 134 {IntrusionSensor::Invalid, "Invalid"}, 135 {IntrusionSensor::Normal, "Normal"}, 136 {IntrusionSensor::HardwareIntrusion, "HardwareIntrusion"}, 137 {IntrusionSensor::TamperingDetected, "TamperingDetected"}, 138 }); 139 140 NLOHMANN_JSON_SERIALIZE_ENUM(IntrusionSensorReArm, { 141 {IntrusionSensorReArm::Invalid, "Invalid"}, 142 {IntrusionSensorReArm::Manual, "Manual"}, 143 {IntrusionSensorReArm::Automatic, "Automatic"}, 144 }); 145 146 NLOHMANN_JSON_SERIALIZE_ENUM(EnvironmentalClass, { 147 {EnvironmentalClass::Invalid, "Invalid"}, 148 {EnvironmentalClass::A1, "A1"}, 149 {EnvironmentalClass::A2, "A2"}, 150 {EnvironmentalClass::A3, "A3"}, 151 {EnvironmentalClass::A4, "A4"}, 152 }); 153 154 NLOHMANN_JSON_SERIALIZE_ENUM(ThermalDirection, { 155 {ThermalDirection::Invalid, "Invalid"}, 156 {ThermalDirection::FrontToBack, "FrontToBack"}, 157 {ThermalDirection::BackToFront, "BackToFront"}, 158 {ThermalDirection::TopExhaust, "TopExhaust"}, 159 {ThermalDirection::Sealed, "Sealed"}, 160 }); 161 162 NLOHMANN_JSON_SERIALIZE_ENUM(DoorState, { 163 {DoorState::Invalid, "Invalid"}, 164 {DoorState::Locked, "Locked"}, 165 {DoorState::Closed, "Closed"}, 166 {DoorState::LockedAndOpen, "LockedAndOpen"}, 167 {DoorState::Open, "Open"}, 168 }); 169 170 NLOHMANN_JSON_SERIALIZE_ENUM(RackUnits, { 171 {RackUnits::Invalid, "Invalid"}, 172 {RackUnits::OpenU, "OpenU"}, 173 {RackUnits::EIA_310, "EIA_310"}, 174 }); 175 176 NLOHMANN_JSON_SERIALIZE_ENUM(RackMountWidth, { 177 {RackMountWidth::Invalid, "Invalid"}, 178 {RackMountWidth::OpenU, "OpenU"}, 179 {RackMountWidth::EIA_310, "EIA_310"}, 180 {RackMountWidth::EIA_310_Telco, "EIA_310_Telco"}, 181 {RackMountWidth::HalfWidth, "HalfWidth"}, 182 }); 183 184 } 185 // clang-format on 186