#pragma once

#include <chrono>

struct ReadReturn
{
    double value;
    std::chrono::high_resolution_clock::time_point updated;

    bool operator==(const ReadReturn& rhs) const
    {
        return (this->value == rhs.value && this->updated == rhs.updated);
    }
};

/*
 * A ReadInterface is a plug-in for the PluggableSensor and anyone implementing
 * this basically is providing a way to read a sensor.
 */
class ReadInterface
{
  public:
    ReadInterface()
    {
    }

    virtual ~ReadInterface()
    {
    }

    virtual ReadReturn read(void) = 0;
};

/*
 * A WriteInterface is a plug-in for the PluggableSensor and anyone implementing
 * this basically is providing a way to write a sensor.
 */
class WriteInterface
{
  public:
    WriteInterface(int64_t min, int64_t max) : _min(min), _max(max)
    {
    }

    virtual ~WriteInterface()
    {
    }

    virtual void write(double value) = 0;

    /*
     * All WriteInterfaces have min/max available in case they want to error
     * check.
     */
    int64_t getMin(void)
    {
        return _min;
    }
    int64_t getMax(void)
    {
        return _max;
    }

  private:
    int64_t _min;
    int64_t _max;
};
