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