blob: 61c75d51173295208e96729880114d052fd80f73 [file] [log] [blame]
Szymon Dompkef763c9e2021-03-12 09:19:22 +01001#pragma once
2
3#include "interfaces/sensor.hpp"
4#include "interfaces/sensor_listener.hpp"
5#include "interfaces/threshold.hpp"
6#include "interfaces/trigger_action.hpp"
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +00007#include "types/trigger_types.hpp"
Szymon Dompkef763c9e2021-03-12 09:19:22 +01008
9#include <boost/asio/steady_timer.hpp>
10
11#include <chrono>
12#include <memory>
13#include <vector>
14
15class OnChangeThreshold :
16 public interfaces::Threshold,
17 public interfaces::SensorListener,
18 public std::enable_shared_from_this<OnChangeThreshold>
19{
20 public:
21 OnChangeThreshold(
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +000022 Sensors sensors, std::vector<std::string> sensorNames,
Szymon Dompkef763c9e2021-03-12 09:19:22 +010023 std::vector<std::unique_ptr<interfaces::TriggerAction>> actions);
24 ~OnChangeThreshold()
25 {}
26
27 void initialize() override;
Krzysztof Grobelny51f0fd52021-12-28 16:32:08 +010028 void sensorUpdated(interfaces::Sensor&, Milliseconds) override;
29 void sensorUpdated(interfaces::Sensor&, Milliseconds, double) override;
Szymon Dompkef763c9e2021-03-12 09:19:22 +010030
31 private:
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +000032 const Sensors sensors;
Szymon Dompkef763c9e2021-03-12 09:19:22 +010033 const std::vector<std::string> sensorNames;
34 const std::vector<std::unique_ptr<interfaces::TriggerAction>> actions;
35
Krzysztof Grobelny51f0fd52021-12-28 16:32:08 +010036 void commit(const std::string&, Milliseconds, double);
Szymon Dompkef763c9e2021-03-12 09:19:22 +010037};