1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace metric_definition 7 { 8 // clang-format off 9 10 enum class MetricType{ 11 Invalid, 12 Numeric, 13 Discrete, 14 Gauge, 15 Counter, 16 Countdown, 17 String, 18 }; 19 20 enum class ImplementationType{ 21 Invalid, 22 PhysicalSensor, 23 Calculated, 24 Synthesized, 25 DigitalMeter, 26 }; 27 28 enum class MetricDataType{ 29 Invalid, 30 Boolean, 31 DateTime, 32 Decimal, 33 Integer, 34 String, 35 Enumeration, 36 }; 37 38 enum class Calculable{ 39 Invalid, 40 NonCalculatable, 41 Summable, 42 NonSummable, 43 }; 44 45 enum class CalculationAlgorithmEnum{ 46 Invalid, 47 Average, 48 Maximum, 49 Minimum, 50 OEM, 51 }; 52 53 NLOHMANN_JSON_SERIALIZE_ENUM(MetricType, { 54 {MetricType::Invalid, "Invalid"}, 55 {MetricType::Numeric, "Numeric"}, 56 {MetricType::Discrete, "Discrete"}, 57 {MetricType::Gauge, "Gauge"}, 58 {MetricType::Counter, "Counter"}, 59 {MetricType::Countdown, "Countdown"}, 60 {MetricType::String, "String"}, 61 }); 62 63 NLOHMANN_JSON_SERIALIZE_ENUM(ImplementationType, { 64 {ImplementationType::Invalid, "Invalid"}, 65 {ImplementationType::PhysicalSensor, "PhysicalSensor"}, 66 {ImplementationType::Calculated, "Calculated"}, 67 {ImplementationType::Synthesized, "Synthesized"}, 68 {ImplementationType::DigitalMeter, "DigitalMeter"}, 69 }); 70 71 NLOHMANN_JSON_SERIALIZE_ENUM(MetricDataType, { 72 {MetricDataType::Invalid, "Invalid"}, 73 {MetricDataType::Boolean, "Boolean"}, 74 {MetricDataType::DateTime, "DateTime"}, 75 {MetricDataType::Decimal, "Decimal"}, 76 {MetricDataType::Integer, "Integer"}, 77 {MetricDataType::String, "String"}, 78 {MetricDataType::Enumeration, "Enumeration"}, 79 }); 80 81 NLOHMANN_JSON_SERIALIZE_ENUM(Calculable, { 82 {Calculable::Invalid, "Invalid"}, 83 {Calculable::NonCalculatable, "NonCalculatable"}, 84 {Calculable::Summable, "Summable"}, 85 {Calculable::NonSummable, "NonSummable"}, 86 }); 87 88 NLOHMANN_JSON_SERIALIZE_ENUM(CalculationAlgorithmEnum, { 89 {CalculationAlgorithmEnum::Invalid, "Invalid"}, 90 {CalculationAlgorithmEnum::Average, "Average"}, 91 {CalculationAlgorithmEnum::Maximum, "Maximum"}, 92 {CalculationAlgorithmEnum::Minimum, "Minimum"}, 93 {CalculationAlgorithmEnum::OEM, "OEM"}, 94 }); 95 96 } 97 // clang-format on 98