1*0ec8b83dSEd Tanous #pragma once 2*0ec8b83dSEd Tanous #include <nlohmann/json.hpp> 3*0ec8b83dSEd Tanous 4*0ec8b83dSEd Tanous namespace chassis 5*0ec8b83dSEd Tanous { 6*0ec8b83dSEd Tanous // clang-format off 7*0ec8b83dSEd Tanous 8*0ec8b83dSEd Tanous enum class ChassisType{ 9*0ec8b83dSEd Tanous Invalid, 10*0ec8b83dSEd Tanous Rack, 11*0ec8b83dSEd Tanous Blade, 12*0ec8b83dSEd Tanous Enclosure, 13*0ec8b83dSEd Tanous StandAlone, 14*0ec8b83dSEd Tanous RackMount, 15*0ec8b83dSEd Tanous Card, 16*0ec8b83dSEd Tanous Cartridge, 17*0ec8b83dSEd Tanous Row, 18*0ec8b83dSEd Tanous Pod, 19*0ec8b83dSEd Tanous Expansion, 20*0ec8b83dSEd Tanous Sidecar, 21*0ec8b83dSEd Tanous Zone, 22*0ec8b83dSEd Tanous Sled, 23*0ec8b83dSEd Tanous Shelf, 24*0ec8b83dSEd Tanous Drawer, 25*0ec8b83dSEd Tanous Module, 26*0ec8b83dSEd Tanous Component, 27*0ec8b83dSEd Tanous IPBasedDrive, 28*0ec8b83dSEd Tanous RackGroup, 29*0ec8b83dSEd Tanous StorageEnclosure, 30*0ec8b83dSEd Tanous Other, 31*0ec8b83dSEd Tanous }; 32*0ec8b83dSEd Tanous 33*0ec8b83dSEd Tanous enum class IndicatorLED{ 34*0ec8b83dSEd Tanous Invalid, 35*0ec8b83dSEd Tanous Unknown, 36*0ec8b83dSEd Tanous Lit, 37*0ec8b83dSEd Tanous Blinking, 38*0ec8b83dSEd Tanous Off, 39*0ec8b83dSEd Tanous }; 40*0ec8b83dSEd Tanous 41*0ec8b83dSEd Tanous enum class PowerState{ 42*0ec8b83dSEd Tanous Invalid, 43*0ec8b83dSEd Tanous On, 44*0ec8b83dSEd Tanous Off, 45*0ec8b83dSEd Tanous PoweringOn, 46*0ec8b83dSEd Tanous PoweringOff, 47*0ec8b83dSEd Tanous }; 48*0ec8b83dSEd Tanous 49*0ec8b83dSEd Tanous enum class IntrusionSensor{ 50*0ec8b83dSEd Tanous Invalid, 51*0ec8b83dSEd Tanous Normal, 52*0ec8b83dSEd Tanous HardwareIntrusion, 53*0ec8b83dSEd Tanous TamperingDetected, 54*0ec8b83dSEd Tanous }; 55*0ec8b83dSEd Tanous 56*0ec8b83dSEd Tanous enum class IntrusionSensorReArm{ 57*0ec8b83dSEd Tanous Invalid, 58*0ec8b83dSEd Tanous Manual, 59*0ec8b83dSEd Tanous Automatic, 60*0ec8b83dSEd Tanous }; 61*0ec8b83dSEd Tanous 62*0ec8b83dSEd Tanous enum class EnvironmentalClass{ 63*0ec8b83dSEd Tanous Invalid, 64*0ec8b83dSEd Tanous A1, 65*0ec8b83dSEd Tanous A2, 66*0ec8b83dSEd Tanous A3, 67*0ec8b83dSEd Tanous A4, 68*0ec8b83dSEd Tanous }; 69*0ec8b83dSEd Tanous 70*0ec8b83dSEd Tanous enum class ThermalDirection{ 71*0ec8b83dSEd Tanous Invalid, 72*0ec8b83dSEd Tanous FrontToBack, 73*0ec8b83dSEd Tanous BackToFront, 74*0ec8b83dSEd Tanous TopExhaust, 75*0ec8b83dSEd Tanous Sealed, 76*0ec8b83dSEd Tanous }; 77*0ec8b83dSEd Tanous 78*0ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ChassisType, { 79*0ec8b83dSEd Tanous {ChassisType::Invalid, "Invalid"}, 80*0ec8b83dSEd Tanous {ChassisType::Rack, "Rack"}, 81*0ec8b83dSEd Tanous {ChassisType::Blade, "Blade"}, 82*0ec8b83dSEd Tanous {ChassisType::Enclosure, "Enclosure"}, 83*0ec8b83dSEd Tanous {ChassisType::StandAlone, "StandAlone"}, 84*0ec8b83dSEd Tanous {ChassisType::RackMount, "RackMount"}, 85*0ec8b83dSEd Tanous {ChassisType::Card, "Card"}, 86*0ec8b83dSEd Tanous {ChassisType::Cartridge, "Cartridge"}, 87*0ec8b83dSEd Tanous {ChassisType::Row, "Row"}, 88*0ec8b83dSEd Tanous {ChassisType::Pod, "Pod"}, 89*0ec8b83dSEd Tanous {ChassisType::Expansion, "Expansion"}, 90*0ec8b83dSEd Tanous {ChassisType::Sidecar, "Sidecar"}, 91*0ec8b83dSEd Tanous {ChassisType::Zone, "Zone"}, 92*0ec8b83dSEd Tanous {ChassisType::Sled, "Sled"}, 93*0ec8b83dSEd Tanous {ChassisType::Shelf, "Shelf"}, 94*0ec8b83dSEd Tanous {ChassisType::Drawer, "Drawer"}, 95*0ec8b83dSEd Tanous {ChassisType::Module, "Module"}, 96*0ec8b83dSEd Tanous {ChassisType::Component, "Component"}, 97*0ec8b83dSEd Tanous {ChassisType::IPBasedDrive, "IPBasedDrive"}, 98*0ec8b83dSEd Tanous {ChassisType::RackGroup, "RackGroup"}, 99*0ec8b83dSEd Tanous {ChassisType::StorageEnclosure, "StorageEnclosure"}, 100*0ec8b83dSEd Tanous {ChassisType::Other, "Other"}, 101*0ec8b83dSEd Tanous }); 102*0ec8b83dSEd Tanous 103*0ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(IndicatorLED, { 104*0ec8b83dSEd Tanous {IndicatorLED::Invalid, "Invalid"}, 105*0ec8b83dSEd Tanous {IndicatorLED::Unknown, "Unknown"}, 106*0ec8b83dSEd Tanous {IndicatorLED::Lit, "Lit"}, 107*0ec8b83dSEd Tanous {IndicatorLED::Blinking, "Blinking"}, 108*0ec8b83dSEd Tanous {IndicatorLED::Off, "Off"}, 109*0ec8b83dSEd Tanous }); 110*0ec8b83dSEd Tanous 111*0ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(PowerState, { 112*0ec8b83dSEd Tanous {PowerState::Invalid, "Invalid"}, 113*0ec8b83dSEd Tanous {PowerState::On, "On"}, 114*0ec8b83dSEd Tanous {PowerState::Off, "Off"}, 115*0ec8b83dSEd Tanous {PowerState::PoweringOn, "PoweringOn"}, 116*0ec8b83dSEd Tanous {PowerState::PoweringOff, "PoweringOff"}, 117*0ec8b83dSEd Tanous }); 118*0ec8b83dSEd Tanous 119*0ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(IntrusionSensor, { 120*0ec8b83dSEd Tanous {IntrusionSensor::Invalid, "Invalid"}, 121*0ec8b83dSEd Tanous {IntrusionSensor::Normal, "Normal"}, 122*0ec8b83dSEd Tanous {IntrusionSensor::HardwareIntrusion, "HardwareIntrusion"}, 123*0ec8b83dSEd Tanous {IntrusionSensor::TamperingDetected, "TamperingDetected"}, 124*0ec8b83dSEd Tanous }); 125*0ec8b83dSEd Tanous 126*0ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(IntrusionSensorReArm, { 127*0ec8b83dSEd Tanous {IntrusionSensorReArm::Invalid, "Invalid"}, 128*0ec8b83dSEd Tanous {IntrusionSensorReArm::Manual, "Manual"}, 129*0ec8b83dSEd Tanous {IntrusionSensorReArm::Automatic, "Automatic"}, 130*0ec8b83dSEd Tanous }); 131*0ec8b83dSEd Tanous 132*0ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(EnvironmentalClass, { 133*0ec8b83dSEd Tanous {EnvironmentalClass::Invalid, "Invalid"}, 134*0ec8b83dSEd Tanous {EnvironmentalClass::A1, "A1"}, 135*0ec8b83dSEd Tanous {EnvironmentalClass::A2, "A2"}, 136*0ec8b83dSEd Tanous {EnvironmentalClass::A3, "A3"}, 137*0ec8b83dSEd Tanous {EnvironmentalClass::A4, "A4"}, 138*0ec8b83dSEd Tanous }); 139*0ec8b83dSEd Tanous 140*0ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ThermalDirection, { 141*0ec8b83dSEd Tanous {ThermalDirection::Invalid, "Invalid"}, 142*0ec8b83dSEd Tanous {ThermalDirection::FrontToBack, "FrontToBack"}, 143*0ec8b83dSEd Tanous {ThermalDirection::BackToFront, "BackToFront"}, 144*0ec8b83dSEd Tanous {ThermalDirection::TopExhaust, "TopExhaust"}, 145*0ec8b83dSEd Tanous {ThermalDirection::Sealed, "Sealed"}, 146*0ec8b83dSEd Tanous }); 147*0ec8b83dSEd Tanous 148*0ec8b83dSEd Tanous } 149*0ec8b83dSEd Tanous // clang-format on 150