#pragma once #include 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; virtual bool getFailed(void) const { return false; } }; /* * 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; };