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