summaryrefslogtreecommitdiffstats
path: root/monitor/fan.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'monitor/fan.cpp')
-rw-r--r--monitor/fan.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/monitor/fan.cpp b/monitor/fan.cpp
index a2e0386..ba0744a 100644
--- a/monitor/fan.cpp
+++ b/monitor/fan.cpp
@@ -39,11 +39,13 @@ constexpr auto OPERATIONAL_STATUS_INTF =
Fan::Fan(Mode mode,
sdbusplus::bus::bus& bus,
phosphor::fan::event::EventPtr& events,
+ std::unique_ptr<trust::Manager>& trust,
const FanDefinition& def) :
_bus(bus),
_name(std::get<fanNameField>(def)),
_deviation(std::get<fanDeviationField>(def)),
- _numSensorFailsForNonFunc(std::get<numSensorFailsForNonfuncField>(def))
+ _numSensorFailsForNonFunc(std::get<numSensorFailsForNonfuncField>(def)),
+ _trustManager(trust)
{
//Start from a known state of functional
updateInventory(true);
@@ -64,6 +66,8 @@ Fan::Fan(Mode mode,
std::get<hasTargetField>(s),
std::get<timeoutField>(def),
events));
+
+ _trustManager->registerSensor(_sensors.back());
}
catch (InvalidSensorError& e)
{
@@ -89,6 +93,14 @@ void Fan::tachChanged()
void Fan::tachChanged(TachSensor& sensor)
{
+ if (_trustManager->active())
+ {
+ if (!_trustManager->checkTrust(sensor))
+ {
+ return;
+ }
+ }
+
auto running = sensor.timerRunning();
//If this sensor is out of range at this moment, start
OpenPOWER on IntegriCloud