blob: 90e148c72e35f6913046073663b861600a6564ff [file] [log] [blame]
James Feist139cb572018-09-10 15:26:18 -07001#pragma once
2#include <Utils.hpp>
3#include <nlohmann/json.hpp>
4
James Feistaf79dd32018-09-12 12:54:15 -07005struct Sensor;
James Feist139cb572018-09-10 15:26:18 -07006namespace thresholds
7{
8enum Level
9{
10 WARNING,
11 CRITICAL
12};
13enum Direction
14{
15 HIGH,
16 LOW
17};
18struct Threshold
19{
20 Threshold(const Level &lev, const Direction &dir, const double &val,
21 bool write = true) :
22 level(lev),
23 direction(dir), value(val), writeable(write)
24 {
25 }
26 Level level;
27 Direction direction;
28 double value;
29 bool writeable;
James Feistaf79dd32018-09-12 12:54:15 -070030 bool asserted = false;
James Feist139cb572018-09-10 15:26:18 -070031};
32
33bool ParseThresholdsFromConfig(
34 const SensorData &sensorData,
35 std::vector<thresholds::Threshold> &thresholdVector,
36 const std::string *matchLabel = nullptr);
37
38bool ParseThresholdsFromAttr(std::vector<thresholds::Threshold> &thresholds,
39 const std::string &input_path,
40 const double scale_factor);
41bool HasCriticalInterface(
42 const std::vector<thresholds::Threshold> &threshold_vector);
James Feistaf79dd32018-09-12 12:54:15 -070043
James Feist139cb572018-09-10 15:26:18 -070044bool HasWarningInterface(
45 const std::vector<thresholds::Threshold> &threshold_vector);
46
47void persistThreshold(const std::string &baseInterface, const std::string &path,
48 const thresholds::Threshold &threshold,
49 std::shared_ptr<sdbusplus::asio::connection> &conn);
James Feistaf79dd32018-09-12 12:54:15 -070050
51void checkThresholds(Sensor *sensor);
52void assertThresholds(Sensor *sensor, thresholds::Level level,
53 thresholds::Direction direction, bool assert);
James Feist139cb572018-09-10 15:26:18 -070054} // namespace thresholds