1 #pragma once
2
3 #include "utils/conversion.hpp"
4
5 #include <array>
6 #include <cstdint>
7 #include <string_view>
8 #include <type_traits>
9
10 enum class ReportAction : uint32_t
11 {
12 emitsReadingsUpdate,
13 logToMetricReportsCollection
14 };
15
16 namespace utils
17 {
18
19 template <>
20 struct EnumTraits<ReportAction>
21 {
22 static constexpr auto propertyName = ConstexprString{"ReportAction"};
23 };
24
25 constexpr std::array<std::pair<std::string_view, ReportAction>, 2>
26 convDataReportAction = {
27 {std::make_pair<std::string_view, ReportAction>(
28 "xyz.openbmc_project.Telemetry.Report."
29 "ReportActions.EmitsReadingsUpdate",
30 ReportAction::emitsReadingsUpdate),
31 std::make_pair<std::string_view, ReportAction>(
32 "xyz.openbmc_project.Telemetry.Report."
33 "ReportActions.LogToMetricReportsCollection",
34 ReportAction::logToMetricReportsCollection)}};
35
toReportAction(std::underlying_type_t<ReportAction> value)36 inline ReportAction toReportAction(std::underlying_type_t<ReportAction> value)
37 {
38 return toEnum<ReportAction, minEnumValue(convDataReportAction),
39 maxEnumValue(convDataReportAction)>(value);
40 }
41
toReportAction(const std::string & value)42 inline ReportAction toReportAction(const std::string& value)
43 {
44 return toEnum(convDataReportAction, value);
45 }
46
enumToString(ReportAction value)47 inline std::string enumToString(ReportAction value)
48 {
49 return std::string(enumToString(convDataReportAction, value));
50 }
51
52 } // namespace utils
53