blob: 51ebb0d33b69445aeda3008b82e49ea69a71feec [file] [log] [blame]
#pragma once
#include <cstdint>
#include <nlohmann/json.hpp>
namespace chassis
{
// clang-format off
enum class ChassisType : std::uint8_t{
Invalid,
Rack,
Blade,
Enclosure,
StandAlone,
RackMount,
Card,
Cartridge,
Row,
Pod,
Expansion,
Sidecar,
Zone,
Sled,
Shelf,
Drawer,
Module,
Component,
IPBasedDrive,
RackGroup,
StorageEnclosure,
ImmersionTank,
HeatExchanger,
Other,
};
enum class IndicatorLED : std::uint8_t{
Invalid,
Unknown,
Lit,
Blinking,
Off,
};
enum class IntrusionSensor : std::uint8_t{
Invalid,
Normal,
HardwareIntrusion,
TamperingDetected,
};
enum class IntrusionSensorReArm : std::uint8_t{
Invalid,
Manual,
Automatic,
};
enum class EnvironmentalClass : std::uint8_t{
Invalid,
A1,
A2,
A3,
A4,
};
enum class ThermalDirection : std::uint8_t{
Invalid,
FrontToBack,
BackToFront,
TopExhaust,
Sealed,
};
NLOHMANN_JSON_SERIALIZE_ENUM(ChassisType, {
{ChassisType::Invalid, "Invalid"},
{ChassisType::Rack, "Rack"},
{ChassisType::Blade, "Blade"},
{ChassisType::Enclosure, "Enclosure"},
{ChassisType::StandAlone, "StandAlone"},
{ChassisType::RackMount, "RackMount"},
{ChassisType::Card, "Card"},
{ChassisType::Cartridge, "Cartridge"},
{ChassisType::Row, "Row"},
{ChassisType::Pod, "Pod"},
{ChassisType::Expansion, "Expansion"},
{ChassisType::Sidecar, "Sidecar"},
{ChassisType::Zone, "Zone"},
{ChassisType::Sled, "Sled"},
{ChassisType::Shelf, "Shelf"},
{ChassisType::Drawer, "Drawer"},
{ChassisType::Module, "Module"},
{ChassisType::Component, "Component"},
{ChassisType::IPBasedDrive, "IPBasedDrive"},
{ChassisType::RackGroup, "RackGroup"},
{ChassisType::StorageEnclosure, "StorageEnclosure"},
{ChassisType::ImmersionTank, "ImmersionTank"},
{ChassisType::HeatExchanger, "HeatExchanger"},
{ChassisType::Other, "Other"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(IndicatorLED, {
{IndicatorLED::Invalid, "Invalid"},
{IndicatorLED::Unknown, "Unknown"},
{IndicatorLED::Lit, "Lit"},
{IndicatorLED::Blinking, "Blinking"},
{IndicatorLED::Off, "Off"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(IntrusionSensor, {
{IntrusionSensor::Invalid, "Invalid"},
{IntrusionSensor::Normal, "Normal"},
{IntrusionSensor::HardwareIntrusion, "HardwareIntrusion"},
{IntrusionSensor::TamperingDetected, "TamperingDetected"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(IntrusionSensorReArm, {
{IntrusionSensorReArm::Invalid, "Invalid"},
{IntrusionSensorReArm::Manual, "Manual"},
{IntrusionSensorReArm::Automatic, "Automatic"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(EnvironmentalClass, {
{EnvironmentalClass::Invalid, "Invalid"},
{EnvironmentalClass::A1, "A1"},
{EnvironmentalClass::A2, "A2"},
{EnvironmentalClass::A3, "A3"},
{EnvironmentalClass::A4, "A4"},
});
NLOHMANN_JSON_SERIALIZE_ENUM(ThermalDirection, {
{ThermalDirection::Invalid, "Invalid"},
{ThermalDirection::FrontToBack, "FrontToBack"},
{ThermalDirection::BackToFront, "BackToFront"},
{ThermalDirection::TopExhaust, "TopExhaust"},
{ThermalDirection::Sealed, "Sealed"},
});
} // namespace chassis
// clang-format on