Lines Matching +full:auto +full:- +full:string +full:- +full:detection

8  *     http://www.apache.org/licenses/LICENSE-2.0
35 #include <phosphor-logging/lg2.hpp>
47 const std::string System::dumpFile = "/tmp/fan_monitor_dump.json";
66 // must be done before service detection in start()
94 auto trustGrps = getTrustGroups(jsonObj); in load()
95 auto fanDefs = getFanDefinitions(jsonObj); in load()
113 if (_powerState->isPowerOn()) in load()
119 [this](auto& rule) { in load()
120 rule->check(PowerRuleState::runtime, _fanHealth); in load()
137 std::set<std::string> unique_interfaces{util::FAN_SENSOR_VALUE_INTF}; in subscribeSensorsToServices()
139 for (const auto& fan : _fans) in subscribeSensorsToServices()
141 for (const auto& sensor : fan->sensors()) in subscribeSensorsToServices()
143 unique_interfaces.insert(sensor->getInterface()); in subscribeSensorsToServices()
147 std::vector<std::string> interfaces(unique_interfaces.begin(), in subscribeSensorsToServices()
154 auto serviceObjects = util::SDBusPlus::getSubTreeRaw( in subscribeSensorsToServices()
157 for (const auto& fan : _fans) in subscribeSensorsToServices()
160 for (const auto& sensor : fan->sensors()) in subscribeSensorsToServices()
162 const auto itServ = serviceObjects.find(sensor->name()); in subscribeSensorsToServices()
164 if (serviceObjects.end() == itServ || itServ->second.empty()) in subscribeSensorsToServices()
167 std::format("Fan sensor entry {} not found in D-Bus", in subscribeSensorsToServices()
168 sensor->name()), in subscribeSensorsToServices()
173 for (const auto& [serviceName, unused] : itServ->second) in subscribeSensorsToServices()
182 for (const auto& [serviceName, unused] : sensorMap) in subscribeSensorsToServices()
202 std::string iface; in inventoryOnlineCb()
210 std::string oldName; in inventoryOnlineCb()
213 std::string newName; in inventoryOnlineCb()
269 for (const auto& fanDef : fanDefs) in setFans()
272 auto condition = fanDef.condition; in setFans()
295 std::string serviceName, oldOwner, newOwner; in tachSignalOffline()
301 // true if sensor server came back online, false -> went offline in tachSignalOffline()
304 std::string stateStr(hasOwner ? "online" : "offline"); in tachSignalOffline()
309 auto sensorItr(sensorMap.find(serviceName)); in tachSignalOffline()
313 // set all sensors' owner state to not-owned in tachSignalOffline()
314 for (auto& sensor : sensorItr->second) in tachSignalOffline()
316 sensor->setOwner(hasOwner); in tachSignalOffline()
317 sensor->getFan().process(*sensor); in tachSignalOffline()
325 for (const auto& sensor : fan.sensors()) in updateFanHealth()
327 sensorStatus.push_back(sensor->functional()); in updateFanHealth()
338 if (_powerState->isPowerOn() && !skipRulesCheck) in fanStatusChange()
341 [this](auto& rule) { in fanStatusChange()
342 rule->check(PowerRuleState::runtime, _fanHealth); in fanStatusChange()
364 std::for_each(_fans.begin(), _fans.end(), [powerStateOn](auto& fan) { in powerStateChanged()
365 fan->powerStateChanged(powerStateOn); in powerStateChanged()
376 // If no fan has its sensors on D-Bus, then there is a problem in powerStateChanged()
378 if (std::all_of(_fans.begin(), _fans.end(), [](const auto& fan) { in powerStateChanged()
379 return fan->numSensorsOnDBusAtPowerOn() == 0; in powerStateChanged()
385 [powerStateOn](auto& fan) { in powerStateChanged()
386 fan->powerStateChanged(powerStateOn); in powerStateChanged()
388 if (std::all_of(_fans.begin(), _fans.end(), [](const auto& fan) { in powerStateChanged()
389 return fan->numSensorsOnDBusAtPowerOn() == 0; in powerStateChanged()
407 [this](auto& rule) { in powerStateChanged()
408 rule->check(PowerRuleState::atPgood, _fanHealth); in powerStateChanged()
411 [this](auto& rule) { in powerStateChanged()
412 rule->check(PowerRuleState::runtime, _fanHealth); in powerStateChanged()
419 // Cancel any in-progress power off actions in powerStateChanged()
421 [](auto& rule) { rule->cancel(); }); in powerStateChanged()
427 std::string fanPath{util::INVENTORY_PATH + fan.getName()}; in sensorErrorTimerExpired()
438 for (const auto& fan : _fans) in sensorErrorTimerExpired()
440 for (const auto& s : fan->sensors()) in sensorErrorTimerExpired()
445 if (!s->functional() && !s->errorTimerRunning()) in sensorErrorTimerExpired()
458 auto error = in sensorErrorTimerExpired()
462 auto sensorData = captureSensorData(); in sensorErrorTimerExpired()
463 error->commit(sensorData); in sensorErrorTimerExpired()
471 std::string fanPath{util::INVENTORY_PATH + fan.getName()}; in fanMissingErrorTimerExpired()
477 auto error = std::make_unique<FanError>( in fanMissingErrorTimerExpired()
480 auto sensorData = captureSensorData(); in fanMissingErrorTimerExpired()
481 error->commit(sensorData); in fanMissingErrorTimerExpired()
491 getLogger().log("Re-committing previous fan error before power off"); in logShutdownError()
494 auto sensorData = captureSensorData(); in logShutdownError()
495 _lastError->commit(sensorData, true); in logShutdownError()
503 for (const auto& fan : _fans) in captureSensorData()
505 for (const auto& sensor : fan->sensors()) in captureSensorData()
508 values["present"] = fan->present(); in captureSensorData()
509 values["functional"] = sensor->functional(); in captureSensorData()
510 values["in_range"] = !fan->outOfRange(*sensor); in captureSensorData()
511 values["tach"] = sensor->getInput(); in captureSensorData()
513 if (sensor->hasTarget()) in captureSensorData()
515 values["target"] = sensor->getTarget(); in captureSensorData()
518 // convert between string/json to remove newlines in captureSensorData()
519 values["prev_tachs"] = json(sensor->getPrevTach()).dump(); in captureSensorData()
521 if (sensor->hasTarget()) in captureSensorData()
523 values["prev_targets"] = json(sensor->getPrevTarget()).dump(); in captureSensorData()
526 if (sensor->getMethod() == MethodMode::count) in captureSensorData()
528 values["ticks"] = sensor->getCounter(); in captureSensorData()
530 data["sensors"][sensor->name()] = values; in captureSensorData()
542 auto ffdc = collectHwmonFFDC(); in handleOfflineFanController()
564 std::pair<std::string, std::variant<std::string, uint64_t>>>()); in createBmcDump()