#pragma once

#include "sensor.hpp"

#include <sdbusplus/asio/object_server.hpp>

#include <memory>
#include <string>

class PwmSensor
{
  public:
    PwmSensor(const std::string& pwmname, const std::string& sysPath,
              std::shared_ptr<sdbusplus::asio::connection>& conn,
              sdbusplus::asio::object_server& objectServer,
              const std::string& sensorConfiguration,
              const std::string& sensorType, bool isValueMutable = false);
    ~PwmSensor();

  private:
    std::string sysPath;
    sdbusplus::asio::object_server& objectServer;
    std::string name;
    std::shared_ptr<sdbusplus::asio::dbus_interface> sensorInterface;
    std::shared_ptr<sdbusplus::asio::dbus_interface> controlInterface;
    std::shared_ptr<sdbusplus::asio::dbus_interface> association;
    std::shared_ptr<sdbusplus::asio::dbus_interface> valueMutabilityInterface;
    double pwmMax;
    void setValue(uint32_t value);
    uint32_t getValue(bool errThrow = true);
};
