BeeeOn Gateway  v2020.3.1-2-g6f737dc
Platform to interconnect the IoT world
VirtualModule.h
1 #pragma once
2 
3 #include <list>
4 
5 #include <Poco/Nullable.h>
6 #include <Poco/SharedPtr.h>
7 
8 #include "core/Result.h"
9 #include "model/ModuleID.h"
10 #include "model/ModuleType.h"
11 #include "util/Loggable.h"
12 #include "util/ValueGenerator.h"
13 
14 namespace BeeeOn {
15 
17 public:
18  typedef Poco::SharedPtr<VirtualModule> Ptr;
19 
20  enum Reaction {
21  REACTION_SUCCESS,
22  REACTION_FAILURE,
23  REACTION_NONE,
24  };
25 
26  VirtualModule(const ModuleType &moduleType);
27  ~VirtualModule();
28 
29  void setModuleID(const ModuleID &moduleID);
30  ModuleID moduleID() const;
31 
32  void setModuleType(const ModuleType &moduleType);
33  ModuleType moduleType() const;
34 
35  void setMin(double min);
36  double min() const;
37 
38  void setMax(double max);
39  double max() const;
40 
41  bool modifyValue(double value);
42 
43  void setGenerator(const std::string &generator);
44  bool generatorEnabled() const;
45 
46  SensorValue generate();
47 
48  void setReaction(const std::string &reaction);
49  Reaction reaction() const;
50 
51 private:
52  ModuleID m_moduleID;
53  ModuleType m_moduleType;
54  Poco::Nullable<double> m_min;
55  Poco::Nullable<double> m_max;
56  std::list<Poco::SharedPtr<ValueGenerator>> m_generators;
57  Reaction m_reaction;
58  double m_value;
59 };
60 
61 }
Definition: SensorValue.h:14
Definition: ModuleID.h:12
Definition: ModuleType.h:18
Definition: VirtualModule.h:16