xref: /openbmc/bmcweb/features/redfish/include/generated/enums/metric_definition.hpp (revision 40e9b92ec19acffb46f83a6e55b18974da5d708e)
1*40e9b92eSEd Tanous // SPDX-License-Identifier: Apache-2.0
2*40e9b92eSEd Tanous // SPDX-FileCopyrightText: Copyright OpenBMC Authors
30ec8b83dSEd Tanous #pragma once
40ec8b83dSEd Tanous #include <nlohmann/json.hpp>
50ec8b83dSEd Tanous 
60ec8b83dSEd Tanous namespace metric_definition
70ec8b83dSEd Tanous {
80ec8b83dSEd Tanous // clang-format off
90ec8b83dSEd Tanous 
100ec8b83dSEd Tanous enum class MetricType{
110ec8b83dSEd Tanous     Invalid,
120ec8b83dSEd Tanous     Numeric,
130ec8b83dSEd Tanous     Discrete,
140ec8b83dSEd Tanous     Gauge,
150ec8b83dSEd Tanous     Counter,
160ec8b83dSEd Tanous     Countdown,
170ec8b83dSEd Tanous     String,
180ec8b83dSEd Tanous };
190ec8b83dSEd Tanous 
200ec8b83dSEd Tanous enum class ImplementationType{
210ec8b83dSEd Tanous     Invalid,
220ec8b83dSEd Tanous     PhysicalSensor,
230ec8b83dSEd Tanous     Calculated,
240ec8b83dSEd Tanous     Synthesized,
250ec8b83dSEd Tanous     DigitalMeter,
260ec8b83dSEd Tanous };
270ec8b83dSEd Tanous 
280ec8b83dSEd Tanous enum class MetricDataType{
290ec8b83dSEd Tanous     Invalid,
300ec8b83dSEd Tanous     Boolean,
310ec8b83dSEd Tanous     DateTime,
320ec8b83dSEd Tanous     Decimal,
330ec8b83dSEd Tanous     Integer,
340ec8b83dSEd Tanous     String,
350ec8b83dSEd Tanous     Enumeration,
360ec8b83dSEd Tanous };
370ec8b83dSEd Tanous 
380ec8b83dSEd Tanous enum class Calculable{
390ec8b83dSEd Tanous     Invalid,
400ec8b83dSEd Tanous     NonCalculatable,
410ec8b83dSEd Tanous     Summable,
420ec8b83dSEd Tanous     NonSummable,
430ec8b83dSEd Tanous };
440ec8b83dSEd Tanous 
450ec8b83dSEd Tanous enum class CalculationAlgorithmEnum{
460ec8b83dSEd Tanous     Invalid,
470ec8b83dSEd Tanous     Average,
480ec8b83dSEd Tanous     Maximum,
490ec8b83dSEd Tanous     Minimum,
500ec8b83dSEd Tanous     OEM,
510ec8b83dSEd Tanous };
520ec8b83dSEd Tanous 
530ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(MetricType, {
540ec8b83dSEd Tanous     {MetricType::Invalid, "Invalid"},
550ec8b83dSEd Tanous     {MetricType::Numeric, "Numeric"},
560ec8b83dSEd Tanous     {MetricType::Discrete, "Discrete"},
570ec8b83dSEd Tanous     {MetricType::Gauge, "Gauge"},
580ec8b83dSEd Tanous     {MetricType::Counter, "Counter"},
590ec8b83dSEd Tanous     {MetricType::Countdown, "Countdown"},
600ec8b83dSEd Tanous     {MetricType::String, "String"},
610ec8b83dSEd Tanous });
620ec8b83dSEd Tanous 
630ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ImplementationType, {
640ec8b83dSEd Tanous     {ImplementationType::Invalid, "Invalid"},
650ec8b83dSEd Tanous     {ImplementationType::PhysicalSensor, "PhysicalSensor"},
660ec8b83dSEd Tanous     {ImplementationType::Calculated, "Calculated"},
670ec8b83dSEd Tanous     {ImplementationType::Synthesized, "Synthesized"},
680ec8b83dSEd Tanous     {ImplementationType::DigitalMeter, "DigitalMeter"},
690ec8b83dSEd Tanous });
700ec8b83dSEd Tanous 
710ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(MetricDataType, {
720ec8b83dSEd Tanous     {MetricDataType::Invalid, "Invalid"},
730ec8b83dSEd Tanous     {MetricDataType::Boolean, "Boolean"},
740ec8b83dSEd Tanous     {MetricDataType::DateTime, "DateTime"},
750ec8b83dSEd Tanous     {MetricDataType::Decimal, "Decimal"},
760ec8b83dSEd Tanous     {MetricDataType::Integer, "Integer"},
770ec8b83dSEd Tanous     {MetricDataType::String, "String"},
780ec8b83dSEd Tanous     {MetricDataType::Enumeration, "Enumeration"},
790ec8b83dSEd Tanous });
800ec8b83dSEd Tanous 
810ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(Calculable, {
820ec8b83dSEd Tanous     {Calculable::Invalid, "Invalid"},
830ec8b83dSEd Tanous     {Calculable::NonCalculatable, "NonCalculatable"},
840ec8b83dSEd Tanous     {Calculable::Summable, "Summable"},
850ec8b83dSEd Tanous     {Calculable::NonSummable, "NonSummable"},
860ec8b83dSEd Tanous });
870ec8b83dSEd Tanous 
880ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(CalculationAlgorithmEnum, {
890ec8b83dSEd Tanous     {CalculationAlgorithmEnum::Invalid, "Invalid"},
900ec8b83dSEd Tanous     {CalculationAlgorithmEnum::Average, "Average"},
910ec8b83dSEd Tanous     {CalculationAlgorithmEnum::Maximum, "Maximum"},
920ec8b83dSEd Tanous     {CalculationAlgorithmEnum::Minimum, "Minimum"},
930ec8b83dSEd Tanous     {CalculationAlgorithmEnum::OEM, "OEM"},
940ec8b83dSEd Tanous });
950ec8b83dSEd Tanous 
960ec8b83dSEd Tanous }
970ec8b83dSEd Tanous // clang-format on
98