1 #pragma once 2 3 #include "interfaces.hpp" 4 5 #include <chrono> 6 #include <string> 7 8 /** 9 * Abstract base class for all sensors. 10 */ 11 class Sensor 12 { 13 public: 14 Sensor(const std::string& name, int64_t timeout) : 15 _name(name), _timeout(timeout) 16 { 17 } 18 19 virtual ~Sensor() 20 { 21 } 22 23 virtual ReadReturn read(void) = 0; 24 virtual void write(double value) = 0; 25 26 std::string GetName(void) const 27 { 28 return _name; 29 } 30 31 /* Returns the configurable timeout period 32 * for this sensor in seconds (undecorated). 33 */ 34 int64_t GetTimeout(void) const 35 { 36 return _timeout; 37 } 38 39 private: 40 std::string _name; 41 int64_t _timeout; 42 }; 43