IQRF Gateway Daemon
ThermometerService.h
Go to the documentation of this file.
1 
17 #pragma once
18 
19 #include "PrfThermometer.h"
20 #include "JsonUtils.h"
21 #include "IService.h"
22 #include "IMessaging.h"
23 #include <string>
24 #include <map>
25 #include <memory>
26 
27 class IDaemon;
28 class IMessaging;
29 class ISerializer;
30 
32 {
33 public:
34  ThermometerService() = delete;
35  ThermometerService(const std::string& name);
36  virtual ~ThermometerService();
37 
38  void updateConfiguration(const rapidjson::Value& cfg);
39 
40  void setDaemon(IDaemon* daemon) override;
41  void setSerializer(ISerializer* serializer) override;
42  void setMessaging(IMessaging* messaging) override;
43  const std::string& getName() const override {
44  return m_name;
45  }
46 
47  void update(const rapidjson::Value& cfg) override;
48  void start() override;
49  void stop() override;
50 
51 private:
52  void handleMsgFromMessaging(const IMessaging::ustring& msg);
53  void handleTaskFromScheduler(const std::string& task);
54  void processThermometersRead();
55  void scheduleReading();
56 
57  std::string m_name;
58  uint16_t m_readPeriod = 60;
59  int m_timeout = 1000;
60 
61  IMessaging* m_messaging;
62  IDaemon* m_daemon;
63 
64  struct Val {
65  double value = -273.15;
66  double valid = false;
67  };
68 
69  std::map<int,Val> m_thermometers;
71  std::mutex m_mtx;
72 };
long TaskHandle
Task handle is task identification.
Definition: IScheduler.h:32
Definition: ThermometerService.h:31
void stop() override
Stop IService instance.
Definition: ThermometerService.cpp:123
ISerializer interface.
Definition: ISerializer.h:31
static const TaskHandle TASK_HANDLE_INVALID
Invalid task handle.
Definition: IScheduler.h:35
void updateConfiguration(const rapidjson::Value &cfg)
Definition: ThermometerService.cpp:58
IDaemon interface.
Definition: IDaemon.h:31
ThermometerService()=delete
void setSerializer(ISerializer *serializer) override
Set ISerializer instance reference.
Definition: ThermometerService.cpp:86
IService interface.
Definition: IService.h:30
virtual ~ThermometerService()
Definition: ThermometerService.cpp:46
void start() override
Start IService instance.
Definition: ThermometerService.cpp:97
IMessaging interface.
Definition: IMessaging.h:29
void setDaemon(IDaemon *daemon) override
Set IDaemon instance reference.
Definition: ThermometerService.cpp:80
const std::string & getName() const override
Get name of the instance.
Definition: ThermometerService.h:43
void setMessaging(IMessaging *messaging) override
Set IMessaging instance reference.
Definition: ThermometerService.cpp:91
std::basic_string< unsigned char > ustring
Definition: IMessaging.h:54
void update(const rapidjson::Value &cfg) override
Update configuration.
Definition: ThermometerService.cpp:52