blob: 4152dd1e2330accb30dce39dd90f6ae583204373 [file] [log] [blame]
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01001#include "trigger.hpp"
2
3#include "interfaces/types.hpp"
4
5Trigger::Trigger(
6 boost::asio::io_context& ioc,
7 const std::shared_ptr<sdbusplus::asio::object_server>& objServer,
8 const std::string& nameIn, const bool isDiscrete, const bool logToJournal,
9 const bool logToRedfish, const bool updateReport,
10 const std::vector<std::pair<sdbusplus::message::object_path, std::string>>&
11 sensorsIn,
12 const std::vector<std::string>& reportNamesIn,
13 const TriggerThresholdParams& thresholdParamsIn,
14 interfaces::TriggerManager& triggerManager) :
15 name(nameIn),
16 path(triggerDir + name), persistent(false), sensors(sensorsIn),
17 reportNames(reportNamesIn), thresholdParams(thresholdParamsIn)
18{
19 deleteIface = objServer->add_unique_interface(
20 path, deleteIfaceName, [this, &ioc, &triggerManager](auto& dbusIface) {
21 dbusIface.register_method("Delete", [this, &ioc, &triggerManager] {
22 boost::asio::post(ioc, [this, &triggerManager] {
23 triggerManager.removeTrigger(this);
24 });
25 });
26 });
27
28 triggerIface = objServer->add_unique_interface(
29 path, triggerIfaceName,
30 [this, isDiscrete, logToJournal, logToRedfish,
31 updateReport](auto& dbusIface) {
32 dbusIface.register_property_r(
33 "Persistent", persistent,
34 sdbusplus::vtable::property_::emits_change,
35 [](const auto& x) { return x; });
36 dbusIface.register_property_r(
37 "Thresholds", thresholdParams,
38 sdbusplus::vtable::property_::emits_change,
39 [](const auto& x) { return x; });
40 dbusIface.register_property_r(
41 "Sensors", sensors, sdbusplus::vtable::property_::emits_change,
42 [](const auto& x) { return x; });
43 dbusIface.register_property_r(
44 "ReportNames", reportNames,
45 sdbusplus::vtable::property_::emits_change,
46 [](const auto& x) { return x; });
47 dbusIface.register_property_r("Discrete", isDiscrete,
48 sdbusplus::vtable::property_::const_,
49 [](const auto& x) { return x; });
50 dbusIface.register_property_r("LogToJournal", logToJournal,
51 sdbusplus::vtable::property_::const_,
52 [](const auto& x) { return x; });
53 dbusIface.register_property_r("LogToRedfish", logToRedfish,
54 sdbusplus::vtable::property_::const_,
55 [](const auto& x) { return x; });
56 dbusIface.register_property_r("UpdateReport", updateReport,
57 sdbusplus::vtable::property_::const_,
58 [](const auto& x) { return x; });
59 });
60}