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