#pragma once

#include <chrono>


struct ReadReturn {
    double value;
    std::chrono::high_resolution_clock::time_point 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;
};
