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 NLOHMANN_JSON_SERIALIZE_ENUM(ChassisType, { 84 {ChassisType::Invalid, "Invalid"}, 85 {ChassisType::Rack, "Rack"}, 86 {ChassisType::Blade, "Blade"}, 87 {ChassisType::Enclosure, "Enclosure"}, 88 {ChassisType::StandAlone, "StandAlone"}, 89 {ChassisType::RackMount, "RackMount"}, 90 {ChassisType::Card, "Card"}, 91 {ChassisType::Cartridge, "Cartridge"}, 92 {ChassisType::Row, "Row"}, 93 {ChassisType::Pod, "Pod"}, 94 {ChassisType::Expansion, "Expansion"}, 95 {ChassisType::Sidecar, "Sidecar"}, 96 {ChassisType::Zone, "Zone"}, 97 {ChassisType::Sled, "Sled"}, 98 {ChassisType::Shelf, "Shelf"}, 99 {ChassisType::Drawer, "Drawer"}, 100 {ChassisType::Module, "Module"}, 101 {ChassisType::Component, "Component"}, 102 {ChassisType::IPBasedDrive, "IPBasedDrive"}, 103 {ChassisType::RackGroup, "RackGroup"}, 104 {ChassisType::StorageEnclosure, "StorageEnclosure"}, 105 {ChassisType::ImmersionTank, "ImmersionTank"}, 106 {ChassisType::HeatExchanger, "HeatExchanger"}, 107 {ChassisType::PowerStrip, "PowerStrip"}, 108 {ChassisType::Other, "Other"}, 109 }); 110 111 NLOHMANN_JSON_SERIALIZE_ENUM(IndicatorLED, { 112 {IndicatorLED::Invalid, "Invalid"}, 113 {IndicatorLED::Unknown, "Unknown"}, 114 {IndicatorLED::Lit, "Lit"}, 115 {IndicatorLED::Blinking, "Blinking"}, 116 {IndicatorLED::Off, "Off"}, 117 }); 118 119 NLOHMANN_JSON_SERIALIZE_ENUM(IntrusionSensor, { 120 {IntrusionSensor::Invalid, "Invalid"}, 121 {IntrusionSensor::Normal, "Normal"}, 122 {IntrusionSensor::HardwareIntrusion, "HardwareIntrusion"}, 123 {IntrusionSensor::TamperingDetected, "TamperingDetected"}, 124 }); 125 126 NLOHMANN_JSON_SERIALIZE_ENUM(IntrusionSensorReArm, { 127 {IntrusionSensorReArm::Invalid, "Invalid"}, 128 {IntrusionSensorReArm::Manual, "Manual"}, 129 {IntrusionSensorReArm::Automatic, "Automatic"}, 130 }); 131 132 NLOHMANN_JSON_SERIALIZE_ENUM(EnvironmentalClass, { 133 {EnvironmentalClass::Invalid, "Invalid"}, 134 {EnvironmentalClass::A1, "A1"}, 135 {EnvironmentalClass::A2, "A2"}, 136 {EnvironmentalClass::A3, "A3"}, 137 {EnvironmentalClass::A4, "A4"}, 138 }); 139 140 NLOHMANN_JSON_SERIALIZE_ENUM(ThermalDirection, { 141 {ThermalDirection::Invalid, "Invalid"}, 142 {ThermalDirection::FrontToBack, "FrontToBack"}, 143 {ThermalDirection::BackToFront, "BackToFront"}, 144 {ThermalDirection::TopExhaust, "TopExhaust"}, 145 {ThermalDirection::Sealed, "Sealed"}, 146 }); 147 148 NLOHMANN_JSON_SERIALIZE_ENUM(DoorState, { 149 {DoorState::Invalid, "Invalid"}, 150 {DoorState::Locked, "Locked"}, 151 {DoorState::Closed, "Closed"}, 152 {DoorState::LockedAndOpen, "LockedAndOpen"}, 153 {DoorState::Open, "Open"}, 154 }); 155 156 } 157 // clang-format on 158