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