| #pragma once |
| #include <Utils.hpp> |
| #include <nlohmann/json.hpp> |
| |
| struct Sensor; |
| namespace thresholds |
| { |
| enum Level |
| { |
| WARNING, |
| CRITICAL |
| }; |
| enum Direction |
| { |
| HIGH, |
| LOW |
| }; |
| struct Threshold |
| { |
| Threshold(const Level &lev, const Direction &dir, const double &val, |
| bool write = true) : |
| level(lev), |
| direction(dir), value(val), writeable(write) |
| { |
| } |
| Level level; |
| Direction direction; |
| double value; |
| bool writeable; |
| bool asserted = false; |
| }; |
| |
| bool parseThresholdsFromConfig( |
| const SensorData &sensorData, |
| std::vector<thresholds::Threshold> &thresholdVector, |
| const std::string *matchLabel = nullptr); |
| |
| bool parseThresholdsFromAttr(std::vector<thresholds::Threshold> &thresholds, |
| const std::string &inputPath, |
| const double &scaleFactor); |
| bool hasCriticalInterface( |
| const std::vector<thresholds::Threshold> &thresholdVector); |
| |
| bool hasWarningInterface( |
| const std::vector<thresholds::Threshold> &thresholdVector); |
| |
| void persistThreshold(const std::string &baseInterface, const std::string &path, |
| const thresholds::Threshold &threshold, |
| std::shared_ptr<sdbusplus::asio::connection> &conn); |
| |
| // returns false if a critical threshold has been crossed, true otherwise |
| bool checkThresholds(Sensor *sensor); |
| void assertThresholds(Sensor *sensor, thresholds::Level level, |
| thresholds::Direction direction, bool assert); |
| } // namespace thresholds |