diff options
Diffstat (limited to 'control/fan.hpp')
-rw-r--r-- | control/fan.hpp | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/control/fan.hpp b/control/fan.hpp new file mode 100644 index 0000000..e23d44e --- /dev/null +++ b/control/fan.hpp @@ -0,0 +1,79 @@ +#pragma once +#include <sdbusplus/bus.hpp> +#include "types.hpp" + +namespace phosphor +{ +namespace fan +{ +namespace control +{ + + +/** + * @class Fan + * + * Represents a fan. It has sensors used for setting speeds + * on all of the contained rotors. There may or may not be + * a 1 to 1 correspondence between rotors and sensors, depending + * on how the hardware and hwmon is configured. + * + */ +class Fan +{ + public: + + Fan() = delete; + Fan(const Fan&) = delete; + Fan(Fan&&) = default; + Fan& operator=(const Fan&) = delete; + Fan& operator=(Fan&&) = default; + ~Fan() = default; + + /** + * Creates a fan object with sensors specified by + * the fan definition data. + * + * @param[in] bus - the dbus object + * @param[in] def - the fan definition data + */ + Fan(sdbusplus::bus::bus& bus, const FanDefinition& def); + + /** + * Sets the speed value on all contained sensors + * + * @param[in] speed - the value to set + */ + void setSpeed(uint64_t speed); + + private: + + /** + * Returns the service name to use for interacting + * with the fan sensor passed in. + * + * @param[in] sensor - the fan tach sensor name + * @return - the service name + */ + std::string getService(const std::string& sensor); + + /** + * The dbus object + */ + sdbusplus::bus::bus& _bus; + + /** + * The inventory name of the fan + */ + std::string _name; + + /** + * Vector of hwmon sensors for the rotors + */ + std::vector<std::string> _sensors; +}; + + +} +} +} |