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 27 virtual ~ReadInterface() 28 { 29 } 30 31 virtual ReadReturn read(void) = 0; 32 33 virtual bool getFailed(void) const 34 { 35 return false; 36 } 37 }; 38 39 /* 40 * A WriteInterface is a plug-in for the PluggableSensor and anyone implementing 41 * this basically is providing a way to write a sensor. 42 */ 43 class WriteInterface 44 { 45 public: 46 WriteInterface(int64_t min, int64_t max) : _min(min), _max(max) 47 { 48 } 49 50 virtual ~WriteInterface() 51 { 52 } 53 54 virtual void write(double value) = 0; 55 56 /* 57 * All WriteInterfaces have min/max available in case they want to error 58 * check. 59 */ 60 int64_t getMin(void) 61 { 62 return _min; 63 } 64 int64_t getMax(void) 65 { 66 return _max; 67 } 68 69 private: 70 int64_t _min; 71 int64_t _max; 72 }; 73