blob: 7e001574a15a3ece2dd38ed04b7515a01c38939d [file] [log] [blame]
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01001#pragma once
2
3#include "interfaces/trigger_types.hpp"
4
Krzysztof Grobelnye8fc5752021-02-05 14:30:45 +00005#include <sdbusplus/message.hpp>
6
Wludzik, Jozef1477fe62021-01-02 11:56:10 +01007#include <chrono>
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01008#include <utility>
9
10class 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
Szymon Dompkef763c9e2021-03-12 09:19:22 +010024 TriggerParams& isDiscrete(bool val)
25 {
26 discreteProperty = val;
27 return *this;
28 }
29
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010030 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
Cezary Zwolaka4e67612021-02-18 13:16:16 +010045 TriggerParams& updateReport(bool updateReport)
46 {
47 updateReportProperty = updateReport;
48 return *this;
49 }
50
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010051 bool updateReport() const
52 {
53 return updateReportProperty;
54 }
55
Cezary Zwolak4416fce2021-03-17 03:21:06 +010056 const std::vector<LabeledSensorInfo>& sensors() const
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010057 {
Cezary Zwolak4416fce2021-03-17 03:21:06 +010058 return labeledSensorsProperty;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010059 }
60
61 const std::vector<std::string>& reportNames() const
62 {
63 return reportNamesProperty;
64 }
65
Cezary Zwolak4416fce2021-03-17 03:21:06 +010066 TriggerParams& thresholdParams(LabeledTriggerThresholdParams val)
Szymon Dompkef763c9e2021-03-12 09:19:22 +010067 {
Cezary Zwolak4416fce2021-03-17 03:21:06 +010068 labeledThresholdsProperty = std::move(val);
Szymon Dompkef763c9e2021-03-12 09:19:22 +010069 return *this;
70 }
71
Cezary Zwolak4416fce2021-03-17 03:21:06 +010072 const LabeledTriggerThresholdParams& thresholdParams() const
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010073 {
Cezary Zwolak4416fce2021-03-17 03:21:06 +010074 return labeledThresholdsProperty;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010075 }
76
77 private:
78 std::string nameProperty = "Trigger1";
79 bool discreteProperty = false;
80 bool logToJournalProperty = false;
81 bool logToRedfishProperty = false;
Cezary Zwolaka4e67612021-02-18 13:16:16 +010082 bool updateReportProperty = true;
Cezary Zwolak4416fce2021-03-17 03:21:06 +010083 std::vector<LabeledSensorInfo> labeledSensorsProperty = {
84 {"service1", "/xyz/openbmc_project/sensors/temperature/BMC_Temp",
85 "metadata1"}};
86
Wludzik, Jozef1477fe62021-01-02 11:56:10 +010087 std::vector<std::string> reportNamesProperty = {"Report1"};
Cezary Zwolak4416fce2021-03-17 03:21:06 +010088
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}};
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010099};