blob: 08bed4b988b4536ae8b2b68c7a6ec3d185bc3dca [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 Zwolaka4e67612021-02-18 13:16:16 +010056 const TriggerSensors& sensors() const
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010057 {
58 return sensorsProperty;
59 }
60
61 const std::vector<std::string>& reportNames() const
62 {
63 return reportNamesProperty;
64 }
65
Szymon Dompkef763c9e2021-03-12 09:19:22 +010066 TriggerParams& thresholdParams(TriggerThresholdParams val)
67 {
68 thresholdsProperty = std::move(val);
69 return *this;
70 }
71
Wludzik, Jozef1477fe62021-01-02 11:56:10 +010072 const TriggerThresholdParams& thresholdParams() const
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010073 {
74 return thresholdsProperty;
75 }
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;
83 TriggerSensors sensorsProperty = {
84 {sdbusplus::message::object_path(
85 "/xyz/openbmc_project/sensors/temperature/BMC_Temp"),
86 ""}};
Wludzik, Jozef1477fe62021-01-02 11:56:10 +010087 std::vector<std::string> reportNamesProperty = {"Report1"};
88 TriggerThresholdParams thresholdsProperty =
89 std::vector<numeric::ThresholdParam>{
Wludzik, Jozef9f145912021-02-11 08:54:10 +010090 {numeric::typeToString(numeric::Type::lowerCritical),
Wludzik, Jozef1477fe62021-01-02 11:56:10 +010091 std::chrono::milliseconds(10).count(),
Wludzik, Jozef9f145912021-02-11 08:54:10 +010092 numeric::directionToString(numeric::Direction::decreasing), 0.0},
93 {numeric::typeToString(numeric::Type::upperCritical),
Wludzik, Jozef1477fe62021-01-02 11:56:10 +010094 std::chrono::milliseconds(10).count(),
Wludzik, Jozef9f145912021-02-11 08:54:10 +010095 numeric::directionToString(numeric::Direction::increasing), 90.0}};
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010096};