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 CollectionTimeScope : uint32_t
11 {
12 point,
13 interval,
14 startup
15 };
16
17 namespace utils
18 {
19
20 template <>
21 struct EnumTraits<CollectionTimeScope>
22 {
23 static constexpr auto propertyName = ConstexprString{"CollectionTimeScope"};
24 };
25
26 constexpr std::array<std::pair<std::string_view, CollectionTimeScope>, 3>
27 convDataCollectionTimeScope = {
28 {std::make_pair<std::string_view, CollectionTimeScope>(
29 "xyz.openbmc_project.Telemetry.Report.CollectionTimescope.Point",
30 CollectionTimeScope::point),
31 std::make_pair<std::string_view, CollectionTimeScope>(
32 "xyz.openbmc_project.Telemetry.Report.CollectionTimescope."
33 "Interval",
34 CollectionTimeScope::interval),
35 std::make_pair<std::string_view, CollectionTimeScope>(
36 "xyz.openbmc_project.Telemetry.Report.CollectionTimescope."
37 "StartupInterval",
38 CollectionTimeScope::startup)}};
39
toCollectionTimeScope(std::underlying_type_t<CollectionTimeScope> value)40 inline CollectionTimeScope toCollectionTimeScope(
41 std::underlying_type_t<CollectionTimeScope> value)
42 {
43 return toEnum<CollectionTimeScope,
44 minEnumValue(convDataCollectionTimeScope),
45 maxEnumValue(convDataCollectionTimeScope)>(value);
46 }
47
toCollectionTimeScope(const std::string & value)48 inline CollectionTimeScope toCollectionTimeScope(const std::string& value)
49 {
50 return toEnum(convDataCollectionTimeScope, value);
51 }
52
enumToString(CollectionTimeScope value)53 inline std::string enumToString(CollectionTimeScope value)
54 {
55 return std::string(enumToString(convDataCollectionTimeScope, value));
56 }
57
58 } // namespace utils
59