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 
24*f763c9e3SSzymon Dompke     TriggerParams& isDiscrete(bool val)
25*f763c9e3SSzymon Dompke     {
26*f763c9e3SSzymon Dompke         discreteProperty = val;
27*f763c9e3SSzymon Dompke         return *this;
28*f763c9e3SSzymon Dompke     }
29*f763c9e3SSzymon 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 
4576833cb5SWludzik, Jozef     bool updateReport() const
4676833cb5SWludzik, Jozef     {
4776833cb5SWludzik, Jozef         return updateReportProperty;
4876833cb5SWludzik, Jozef     }
4976833cb5SWludzik, Jozef 
5076833cb5SWludzik, Jozef     const std::vector<std::pair<sdbusplus::message::object_path, std::string>>&
5176833cb5SWludzik, Jozef         sensors() const
5276833cb5SWludzik, Jozef     {
5376833cb5SWludzik, Jozef         return sensorsProperty;
5476833cb5SWludzik, Jozef     }
5576833cb5SWludzik, Jozef 
5676833cb5SWludzik, Jozef     const std::vector<std::string>& reportNames() const
5776833cb5SWludzik, Jozef     {
5876833cb5SWludzik, Jozef         return reportNamesProperty;
5976833cb5SWludzik, Jozef     }
6076833cb5SWludzik, Jozef 
61*f763c9e3SSzymon Dompke     TriggerParams& thresholdParams(TriggerThresholdParams val)
62*f763c9e3SSzymon Dompke     {
63*f763c9e3SSzymon Dompke         thresholdsProperty = std::move(val);
64*f763c9e3SSzymon Dompke         return *this;
65*f763c9e3SSzymon Dompke     }
66*f763c9e3SSzymon Dompke 
671477fe6aSWludzik, Jozef     const TriggerThresholdParams& thresholdParams() const
6876833cb5SWludzik, Jozef     {
6976833cb5SWludzik, Jozef         return thresholdsProperty;
7076833cb5SWludzik, Jozef     }
7176833cb5SWludzik, Jozef 
7276833cb5SWludzik, Jozef   private:
7376833cb5SWludzik, Jozef     std::string nameProperty = "Trigger1";
7476833cb5SWludzik, Jozef     bool discreteProperty = false;
7576833cb5SWludzik, Jozef     bool logToJournalProperty = false;
7676833cb5SWludzik, Jozef     bool logToRedfishProperty = false;
7776833cb5SWludzik, Jozef     bool updateReportProperty = false;
7876833cb5SWludzik, Jozef     std::vector<std::pair<sdbusplus::message::object_path, std::string>>
791477fe6aSWludzik, Jozef         sensorsProperty = {
801477fe6aSWludzik, Jozef             {sdbusplus::message::object_path(
811477fe6aSWludzik, Jozef                  "/xyz/openbmc_project/sensors/temperature/BMC_Temp"),
821477fe6aSWludzik, Jozef              ""}};
831477fe6aSWludzik, Jozef     std::vector<std::string> reportNamesProperty = {"Report1"};
841477fe6aSWludzik, Jozef     TriggerThresholdParams thresholdsProperty =
851477fe6aSWludzik, Jozef         std::vector<numeric::ThresholdParam>{
869f145912SWludzik, Jozef             {numeric::typeToString(numeric::Type::lowerCritical),
871477fe6aSWludzik, Jozef              std::chrono::milliseconds(10).count(),
889f145912SWludzik, Jozef              numeric::directionToString(numeric::Direction::decreasing), 0.0},
899f145912SWludzik, Jozef             {numeric::typeToString(numeric::Type::upperCritical),
901477fe6aSWludzik, Jozef              std::chrono::milliseconds(10).count(),
919f145912SWludzik, Jozef              numeric::directionToString(numeric::Direction::increasing), 90.0}};
9276833cb5SWludzik, Jozef };
93