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     virtual bool getFailed(void)
26     {
27         return false;
28     };
29 
30     std::string getName(void) const
31     {
32         return _name;
33     }
34 
35     /* Returns the configurable timeout period
36      * for this sensor in seconds (undecorated).
37      */
38     int64_t getTimeout(void) const
39     {
40         return _timeout;
41     }
42 
43   private:
44     std::string _name;
45     int64_t _timeout;
46 };
47