176833cb5SWludzik, Jozef #pragma once
276833cb5SWludzik, Jozef 
376833cb5SWludzik, Jozef #include "interfaces/trigger_types.hpp"
476833cb5SWludzik, Jozef 
5e8fc5751SKrzysztof Grobelny #include <sdbusplus/message.hpp>
6e8fc5751SKrzysztof Grobelny 
71477fe6aSWludzik, Jozef #include <chrono>
876833cb5SWludzik, Jozef #include <utility>
976833cb5SWludzik, Jozef 
1076833cb5SWludzik, Jozef class TriggerParams
1176833cb5SWludzik, Jozef {
1276833cb5SWludzik, Jozef   public:
1376833cb5SWludzik, Jozef     TriggerParams& name(std::string val)
1476833cb5SWludzik, Jozef     {
1576833cb5SWludzik, Jozef         nameProperty = std::move(val);
1676833cb5SWludzik, Jozef         return *this;
1776833cb5SWludzik, Jozef     }
1876833cb5SWludzik, Jozef 
1976833cb5SWludzik, Jozef     const std::string& name() const
2076833cb5SWludzik, Jozef     {
2176833cb5SWludzik, Jozef         return nameProperty;
2276833cb5SWludzik, Jozef     }
2376833cb5SWludzik, Jozef 
24f763c9e3SSzymon Dompke     TriggerParams& isDiscrete(bool val)
25f763c9e3SSzymon Dompke     {
26f763c9e3SSzymon Dompke         discreteProperty = val;
27f763c9e3SSzymon Dompke         return *this;
28f763c9e3SSzymon Dompke     }
29f763c9e3SSzymon Dompke 
3076833cb5SWludzik, Jozef     bool isDiscrete() const
3176833cb5SWludzik, Jozef     {
3276833cb5SWludzik, Jozef         return discreteProperty;
3376833cb5SWludzik, Jozef     }
3476833cb5SWludzik, Jozef 
3576833cb5SWludzik, Jozef     bool logToJournal() const
3676833cb5SWludzik, Jozef     {
3776833cb5SWludzik, Jozef         return logToJournalProperty;
3876833cb5SWludzik, Jozef     }
3976833cb5SWludzik, Jozef 
4076833cb5SWludzik, Jozef     bool logToRedfish() const
4176833cb5SWludzik, Jozef     {
4276833cb5SWludzik, Jozef         return logToRedfishProperty;
4376833cb5SWludzik, Jozef     }
4476833cb5SWludzik, Jozef 
45a4e67616SCezary Zwolak     TriggerParams& updateReport(bool updateReport)
46a4e67616SCezary Zwolak     {
47a4e67616SCezary Zwolak         updateReportProperty = updateReport;
48a4e67616SCezary Zwolak         return *this;
49a4e67616SCezary Zwolak     }
50a4e67616SCezary Zwolak 
5176833cb5SWludzik, Jozef     bool updateReport() const
5276833cb5SWludzik, Jozef     {
5376833cb5SWludzik, Jozef         return updateReportProperty;
5476833cb5SWludzik, Jozef     }
5576833cb5SWludzik, Jozef 
56*4416fce6SCezary Zwolak     const std::vector<LabeledSensorInfo>& sensors() const
5776833cb5SWludzik, Jozef     {
58*4416fce6SCezary Zwolak         return labeledSensorsProperty;
5976833cb5SWludzik, Jozef     }
6076833cb5SWludzik, Jozef 
6176833cb5SWludzik, Jozef     const std::vector<std::string>& reportNames() const
6276833cb5SWludzik, Jozef     {
6376833cb5SWludzik, Jozef         return reportNamesProperty;
6476833cb5SWludzik, Jozef     }
6576833cb5SWludzik, Jozef 
66*4416fce6SCezary Zwolak     TriggerParams& thresholdParams(LabeledTriggerThresholdParams val)
67f763c9e3SSzymon Dompke     {
68*4416fce6SCezary Zwolak         labeledThresholdsProperty = std::move(val);
69f763c9e3SSzymon Dompke         return *this;
70f763c9e3SSzymon Dompke     }
71f763c9e3SSzymon Dompke 
72*4416fce6SCezary Zwolak     const LabeledTriggerThresholdParams& thresholdParams() const
7376833cb5SWludzik, Jozef     {
74*4416fce6SCezary Zwolak         return labeledThresholdsProperty;
7576833cb5SWludzik, Jozef     }
7676833cb5SWludzik, Jozef 
7776833cb5SWludzik, Jozef   private:
7876833cb5SWludzik, Jozef     std::string nameProperty = "Trigger1";
7976833cb5SWludzik, Jozef     bool discreteProperty = false;
8076833cb5SWludzik, Jozef     bool logToJournalProperty = false;
8176833cb5SWludzik, Jozef     bool logToRedfishProperty = false;
82a4e67616SCezary Zwolak     bool updateReportProperty = true;
83*4416fce6SCezary Zwolak     std::vector<LabeledSensorInfo> labeledSensorsProperty = {
84*4416fce6SCezary Zwolak         {"service1", "/xyz/openbmc_project/sensors/temperature/BMC_Temp",
85*4416fce6SCezary Zwolak          "metadata1"}};
86*4416fce6SCezary Zwolak 
871477fe6aSWludzik, Jozef     std::vector<std::string> reportNamesProperty = {"Report1"};
88*4416fce6SCezary Zwolak 
89*4416fce6SCezary Zwolak     LabeledTriggerThresholdParams labeledThresholdsProperty =
90*4416fce6SCezary Zwolak         std::vector<numeric::LabeledThresholdParam>{
91*4416fce6SCezary Zwolak             numeric::LabeledThresholdParam{
92*4416fce6SCezary Zwolak                 numeric::Type::lowerCritical,
931477fe6aSWludzik, Jozef                 std::chrono::milliseconds(10).count(),
94*4416fce6SCezary Zwolak                 numeric::Direction::decreasing, 0.5},
95*4416fce6SCezary Zwolak             numeric::LabeledThresholdParam{
96*4416fce6SCezary Zwolak                 numeric::Type::upperCritical,
971477fe6aSWludzik, Jozef                 std::chrono::milliseconds(10).count(),
98*4416fce6SCezary Zwolak                 numeric::Direction::increasing, 90.2}};
9976833cb5SWludzik, Jozef };
100