xref: /openbmc/dbus-sensors/src/PwmSensor.hpp (revision 18b6186e531ae37dd22b634c6530f793528473f4)
1 #pragma once
2 
3 #include <sdbusplus/asio/connection.hpp>
4 #include <sdbusplus/asio/object_server.hpp>
5 
6 #include <cstdint>
7 #include <memory>
8 #include <string>
9 
10 class PwmSensor
11 {
12   public:
13     PwmSensor(const std::string& pwmname, const std::string& sysPath,
14               std::shared_ptr<sdbusplus::asio::connection>& conn,
15               sdbusplus::asio::object_server& objectServer,
16               const std::string& sensorConfiguration,
17               const std::string& sensorType, bool isValueMutable = false);
18     ~PwmSensor();
19 
20   private:
21     std::string sysPath;
22     sdbusplus::asio::object_server& objectServer;
23     std::string name;
24     std::shared_ptr<sdbusplus::asio::dbus_interface> sensorInterface;
25     std::shared_ptr<sdbusplus::asio::dbus_interface> controlInterface;
26     std::shared_ptr<sdbusplus::asio::dbus_interface> association;
27     std::shared_ptr<sdbusplus::asio::dbus_interface> valueMutabilityInterface;
28     double pwmMax;
29     void setValue(uint32_t value);
30     uint32_t getValue(bool errThrow = true);
31 };
32