#include #include #include "sensorset.hpp" #include "env.hpp" #include "fan_speed.hpp" #include "hwmon.hpp" #include "hwmonio.hpp" #include "sysfs.hpp" using namespace phosphor::logging; namespace hwmon { uint64_t FanSpeed::target(uint64_t value) { auto curValue = FanSpeedObject::target(); if (curValue != value) { //Write target out to sysfs try { ioAccess.write( value, type, id, entry::target, hwmonio::retries, hwmonio::delay); } catch (const std::system_error& e) { using namespace sdbusplus::xyz::openbmc_project::Control:: Device::Error; report( xyz::openbmc_project::Control::Device:: WriteFailure::CALLOUT_ERRNO(e.code().value()), xyz::openbmc_project::Control::Device:: WriteFailure::CALLOUT_DEVICE_PATH(devPath.c_str())); auto file = sysfs::make_sysfs_path( ioAccess.path(), type, id, entry::target); log("Logging failing sysfs file", phosphor::logging::entry("FILE=%s", file.c_str())); exit(EXIT_FAILURE); } } return FanSpeedObject::target(value); } void FanSpeed::enable() { auto enable = env::getEnv("ENABLE", type, id); if (!enable.empty()) { auto val = std::stoul(enable); try { ioAccess.write( val, type::pwm, id, entry::enable, hwmonio::retries, hwmonio::delay); } catch (const std::system_error& e) { using namespace sdbusplus::xyz::openbmc_project::Control:: Device::Error; phosphor::logging::report( xyz::openbmc_project::Control::Device:: WriteFailure::CALLOUT_ERRNO(e.code().value()), xyz::openbmc_project::Control::Device:: WriteFailure::CALLOUT_DEVICE_PATH(devPath.c_str())); auto fullPath = sysfs::make_sysfs_path( ioAccess.path(), type::pwm, id, entry::enable); log("Logging failing sysfs file", phosphor::logging::entry("FILE=%s", fullPath.c_str())); exit(EXIT_FAILURE); } } } } // namespace hwmon