blob: e5bfac47785075ba8a78fb7db9c1a14e6ec0df01 [file] [log] [blame]
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01001#pragma once
2
Cezary Zwolaka4e67612021-02-18 13:16:16 +01003#include "interfaces/json_storage.hpp"
Wludzik, Jozef1477fe62021-01-02 11:56:10 +01004#include "interfaces/threshold.hpp"
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01005#include "interfaces/trigger.hpp"
Szymon Dompke94f71c52021-12-10 07:16:33 +01006#include "interfaces/trigger_factory.hpp"
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01007#include "interfaces/trigger_manager.hpp"
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +00008#include "types/trigger_types.hpp"
Krzysztof Grobelnye6d48872022-02-08 13:41:30 +01009#include "utils/messanger.hpp"
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010010
11#include <boost/asio/io_context.hpp>
12#include <sdbusplus/asio/object_server.hpp>
Szymon Dompke1cdd7e42022-06-08 14:43:13 +020013#include <sdbusplus/message.hpp>
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010014
15#include <memory>
16
17class Trigger : public interfaces::Trigger
18{
19 public:
Cezary Zwolak4416fce2021-03-17 03:21:06 +010020 Trigger(boost::asio::io_context& ioc,
21 const std::shared_ptr<sdbusplus::asio::object_server>& objServer,
Szymon Dompkeb7b7e1b2022-05-19 10:15:48 +020022 TriggerId&& id, const std::string& name,
Szymon Dompke94f71c52021-12-10 07:16:33 +010023 const std::vector<TriggerAction>& triggerActions,
24 const std::shared_ptr<std::vector<std::string>> reportIds,
Cezary Zwolak4416fce2021-03-17 03:21:06 +010025 std::vector<std::shared_ptr<interfaces::Threshold>>&& thresholds,
26 interfaces::TriggerManager& triggerManager,
Szymon Dompke94f71c52021-12-10 07:16:33 +010027 interfaces::JsonStorage& triggerStorage,
Krzysztof Grobelnye6d48872022-02-08 13:41:30 +010028 const interfaces::TriggerFactory& triggerFactory,
29 Sensors sensorsIn);
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010030
Piotr Sulewskic1dbac12025-11-12 14:14:09 +010031 ~Trigger() = default;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010032 Trigger(const Trigger&) = delete;
33 Trigger(Trigger&&) = delete;
34 Trigger& operator=(const Trigger&) = delete;
35 Trigger& operator=(Trigger&&) = delete;
36
Szymon Dompkee28aa532021-10-27 12:33:12 +020037 std::string getId() const override
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010038 {
Szymon Dompkeb7b7e1b2022-05-19 10:15:48 +020039 return *id;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010040 }
41
42 std::string getPath() const override
43 {
Szymon Dompke1cdd7e42022-06-08 14:43:13 +020044 return path.str;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010045 }
46
Cezary Zwolaka4e67612021-02-18 13:16:16 +010047 bool storeConfiguration() const;
48
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010049 private:
Krzysztof Grobelny55824552022-02-18 16:15:31 +010050 std::vector<LabeledSensorInfo> getLabeledSensorInfo() const;
51 std::vector<LabeledThresholdParam> getLabeledThresholds() const;
Michal Orzel6f56d262025-07-25 11:19:13 +020052 bool isDiscrete() const;
Krzysztof Grobelny55824552022-02-18 16:15:31 +010053
Szymon Dompkeb7b7e1b2022-05-19 10:15:48 +020054 const TriggerId id;
Szymon Dompke1cdd7e42022-06-08 14:43:13 +020055 const sdbusplus::message::object_path path;
Szymon Dompkee28aa532021-10-27 12:33:12 +020056 std::string name;
Szymon Dompke94f71c52021-12-10 07:16:33 +010057 std::vector<TriggerAction> triggerActions;
Cezary Zwolaka4e67612021-02-18 13:16:16 +010058 bool persistent = false;
Szymon Dompke94f71c52021-12-10 07:16:33 +010059 std::shared_ptr<std::vector<std::string>> reportIds;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010060 std::unique_ptr<sdbusplus::asio::dbus_interface> deleteIface;
61 std::unique_ptr<sdbusplus::asio::dbus_interface> triggerIface;
Wludzik, Jozef1477fe62021-01-02 11:56:10 +010062 std::vector<std::shared_ptr<interfaces::Threshold>> thresholds;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010063
Cezary Zwolaka4e67612021-02-18 13:16:16 +010064 interfaces::JsonStorage::FilePath fileName;
65 interfaces::JsonStorage& triggerStorage;
Szymon Dompke94f71c52021-12-10 07:16:33 +010066 Sensors sensors;
Krzysztof Grobelnye6d48872022-02-08 13:41:30 +010067 utils::Messanger messanger;
Cezary Zwolaka4e67612021-02-18 13:16:16 +010068
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010069 public:
70 static constexpr const char* triggerIfaceName =
71 "xyz.openbmc_project.Telemetry.Trigger";
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010072 static constexpr const char* deleteIfaceName =
73 "xyz.openbmc_project.Object.Delete";
Szymon Dompkeb7b7e1b2022-05-19 10:15:48 +020074 static constexpr size_t triggerVersion = 2;
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010075};