1 #pragma once 2 3 #include <chrono> 4 5 struct ReadReturn 6 { 7 double value; 8 std::chrono::high_resolution_clock::time_point updated; 9 10 bool operator==(const ReadReturn& rhs) const 11 { 12 return (this->value == rhs.value && this->updated == rhs.updated); 13 } 14 }; 15 16 /* 17 * A ReadInterface is a plug-in for the PluggableSensor and anyone implementing 18 * this basically is providing a way to read a sensor. 19 */ 20 class ReadInterface 21 { 22 public: 23 ReadInterface() 24 {} 25 26 virtual ~ReadInterface() 27 {} 28 29 virtual ReadReturn read(void) = 0; 30 31 virtual bool getFailed(void) const 32 { 33 return false; 34 } 35 }; 36 37 /* 38 * A WriteInterface is a plug-in for the PluggableSensor and anyone implementing 39 * this basically is providing a way to write a sensor. 40 */ 41 class WriteInterface 42 { 43 public: 44 WriteInterface(int64_t min, int64_t max) : _min(min), _max(max) 45 {} 46 47 virtual ~WriteInterface() 48 {} 49 50 virtual void write(double value) = 0; 51 52 /* 53 * All WriteInterfaces have min/max available in case they want to error 54 * check. 55 */ 56 int64_t getMin(void) 57 { 58 return _min; 59 } 60 int64_t getMax(void) 61 { 62 return _max; 63 } 64 65 private: 66 int64_t _min; 67 int64_t _max; 68 }; 69