xref: /openbmc/telemetry/tests/src/params/trigger_params.hpp (revision 4416fce6fb6539b4e2a6a94a8248934c2eb29820)
1 #pragma once
2 
3 #include "interfaces/trigger_types.hpp"
4 
5 #include <sdbusplus/message.hpp>
6 
7 #include <chrono>
8 #include <utility>
9 
10 class TriggerParams
11 {
12   public:
13     TriggerParams& name(std::string val)
14     {
15         nameProperty = std::move(val);
16         return *this;
17     }
18 
19     const std::string& name() const
20     {
21         return nameProperty;
22     }
23 
24     TriggerParams& isDiscrete(bool val)
25     {
26         discreteProperty = val;
27         return *this;
28     }
29 
30     bool isDiscrete() const
31     {
32         return discreteProperty;
33     }
34 
35     bool logToJournal() const
36     {
37         return logToJournalProperty;
38     }
39 
40     bool logToRedfish() const
41     {
42         return logToRedfishProperty;
43     }
44 
45     TriggerParams& updateReport(bool updateReport)
46     {
47         updateReportProperty = updateReport;
48         return *this;
49     }
50 
51     bool updateReport() const
52     {
53         return updateReportProperty;
54     }
55 
56     const std::vector<LabeledSensorInfo>& sensors() const
57     {
58         return labeledSensorsProperty;
59     }
60 
61     const std::vector<std::string>& reportNames() const
62     {
63         return reportNamesProperty;
64     }
65 
66     TriggerParams& thresholdParams(LabeledTriggerThresholdParams val)
67     {
68         labeledThresholdsProperty = std::move(val);
69         return *this;
70     }
71 
72     const LabeledTriggerThresholdParams& thresholdParams() const
73     {
74         return labeledThresholdsProperty;
75     }
76 
77   private:
78     std::string nameProperty = "Trigger1";
79     bool discreteProperty = false;
80     bool logToJournalProperty = false;
81     bool logToRedfishProperty = false;
82     bool updateReportProperty = true;
83     std::vector<LabeledSensorInfo> labeledSensorsProperty = {
84         {"service1", "/xyz/openbmc_project/sensors/temperature/BMC_Temp",
85          "metadata1"}};
86 
87     std::vector<std::string> reportNamesProperty = {"Report1"};
88 
89     LabeledTriggerThresholdParams labeledThresholdsProperty =
90         std::vector<numeric::LabeledThresholdParam>{
91             numeric::LabeledThresholdParam{
92                 numeric::Type::lowerCritical,
93                 std::chrono::milliseconds(10).count(),
94                 numeric::Direction::decreasing, 0.5},
95             numeric::LabeledThresholdParam{
96                 numeric::Type::upperCritical,
97                 std::chrono::milliseconds(10).count(),
98                 numeric::Direction::increasing, 90.2}};
99 };
100