BeeeOn Gateway  v2020.3.1-2-g6f737dc
Platform to interconnect the IoT world
SensorValue.h
1 #pragma once
2 
3 #include "model/ModuleID.h"
4 
5 namespace BeeeOn {
6 
7 /*
8  * Representation of a single value coming from a sensor. SensorValue
9  * contains module identification, value and valid flag.
10  * The class allows to represent:
11  * - invalid value coming from a module (valid flag is false)
12  * - valid value coming from a module.
13  */
14 class SensorValue {
15 public:
16  /*
17  * Construct a default invalid sensor value. The isValid() method
18  * would return false.
19  */
20  SensorValue();
21  SensorValue(const ModuleID &moduleID);
22 
23  /*
24  * Construct a valid sensor value. The isValid() method
25  * would return true.
26  */
27  SensorValue(const ModuleID &moduleID, const double &value);
28 
29  void setModuleID(const ModuleID &moduleID)
30  {
31  m_moduleID = moduleID;
32  }
33 
34  const ModuleID moduleID() const
35  {
36  return m_moduleID;
37  }
38 
39  void setValue(const double &value)
40  {
41  m_value = value;
42  }
43 
44  double value() const
45  {
46  return m_value;
47  }
48 
49  void setValid(const bool valid)
50  {
51  m_valid = valid;
52  }
53 
54  bool isValid() const
55  {
56  return m_valid;
57  }
58 
59  /*
60  * If the SensorValue is invalid it doesn't check the value.
61  */
62  bool operator !=(const SensorValue &value) const
63  {
64  return !(*this == value);
65  }
66 
67  /*
68  * If the SensorValue is invalid it doesn't check the value.
69  */
70  bool operator ==(const SensorValue &value) const
71  {
72  if (m_moduleID != value.m_moduleID)
73  return false;
74 
75  if (m_valid != value.m_valid)
76  return false;
77 
78  if (m_valid)
79  return m_value == value.m_value;
80 
81  return true;
82  }
83 
84 private:
85  ModuleID m_moduleID;
86  double m_value;
87  bool m_valid;
88 };
89 
90 }
Definition: SensorValue.h:14
Definition: ModuleID.h:12