AskSin++
Sensors.h
1 //- -----------------------------------------------------------------------------------------------------------------------
2 // AskSin++
3 // 2018-01-07 papa Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/
4 //- -----------------------------------------------------------------------------------------------------------------------
5 
6 #ifndef SENSORS_H_
7 #define SENSORS_H_
8 
9 namespace as {
10 
11 class Sensor {
12 protected:
13  bool _present;
14 public:
15  Sensor () : _present(false) {}
16  void init () {}
17  bool present () { return _present; }
18  void measure (__attribute__((unused)) bool async=false) {}
19 };
20 
21 class Brightness : public virtual Sensor {
22 protected:
23  uint32_t _brightness;
24 public:
25  Brightness () : _brightness(0) {}
26  // TODO - define value range for brightness
27  uint32_t brightness () { return _brightness; }
28 };
29 
30 class Temperature : public virtual Sensor {
31 protected:
32  int16_t _temperature;
33 public:
34  Temperature () : _temperature(0) {}
35  // temperature value multiplied by 10
36  int16_t temperature () { return _temperature; }
37 };
38 
39 class Humidity : public virtual Sensor {
40 protected:
41  uint8_t _humidity;
42 public:
43  Humidity () : _humidity(0) {}
44  // humidity value
45  uint8_t humidity () { return _humidity; }
46 };
47 
48 class Pressure : public virtual Sensor {
49 protected:
50  uint16_t _pressure;
51 public:
52  Pressure () : _pressure(0) {}
53  // pressure value
54  uint16_t pressure () { return _pressure; }
55 };
56 
57 class Position : public virtual Sensor {
58 public:
59  enum State { NoPos=0, PosA, PosB, PosC };
60 protected:
61  uint8_t _position;
62 public:
63  Position () : _position(NoPos) {}
64  // return the last measured position
65  uint8_t position () { return _position; }
66  // remap the state before send to central
67  uint8_t remap (uint8_t state) { return state; }
68  // return the measure interval in sysclock ticks
69  uint32_t interval () { return seconds2ticks(1); }
70 };
71 
72 } // end namespace
73 
74 #endif
as::Position
Definition: Sensors.h:57
as::Brightness
Definition: Sensors.h:21
as::Humidity
Definition: Sensors.h:39
as::Temperature
Definition: Sensors.h:30
as::Sensor
Definition: Sensors.h:11
as::Pressure
Definition: Sensors.h:48