IQRF Gateway Daemon
PrfPulseMeter.h
Go to the documentation of this file.
1 
17 #pragma once
18 
19 #include "DpaTask.h"
20 #include "JsonSerializer.h"
21 #include <chrono>
22 
23 class PrfPulseMeter: public DpaTask
24 {
25 public:
26  enum class Cmd {
27  READ_COUNTERS = 0,
28  STORE_COUNTER = 1,
30  };
31 
32  enum class FrcCmd {
33  ALIVE = 0,
34  ALIVE_STOP_AUTOSLEEP = 1,
35  ALIVE_START_AUTOSLEEP = 2
36  };
37 
38  enum class CntNum {
39  CNT_1 = 1,
40  CNT_2 = 2
41  };
42 
43  static const std::string PRF_NAME;
44 
45  PrfPulseMeter();
46  virtual ~PrfPulseMeter();
47 
48  void commandReadCounters(const std::chrono::seconds& sec);
49  void commandStoreCounter(CntNum cntNum, uint32_t value);
50  void commandDisableAutosleep(bool enable);
51 
52  void parseResponse(const DpaMessage& response) override;
53  void parseCommand(const std::string& command) override;
54  const std::string& encodeCommand() const override;
55 
56  uint8_t getThermometerType() const { return m_thermometerType; }
57  double getTemperature() const { return m_temperature; }
58  uint8_t getPowerVoltageType() const { return m_powerVoltageType; }
59  double getPowerVoltage() const { return m_powerVoltage; }
60  double getIqrfSuplyVoltage() const { return m_iqrfSuplyVoltage; }
61  int getRssi() const { return m_rssi; }
62  int getCntLen() const { return m_cntlen; }
63  int getCnts() const { return m_cnts; }
64  int getCounter(CntNum cntNum) const;
65  uint8_t getCntSum() const { return m_cntsum; }
66  uint8_t getDataSum() const { return m_datasum; }
67 
68  bool getStoreCounterResult() const { return m_storeCounterResult; }
69  bool getDisableAutosleepResult() const { return m_disableAutosleepResult; }
70 
71  Cmd getCmd() const;
72 
73 private:
74  void setCmd(Cmd cmd);
75 
76  Cmd m_cmd = Cmd::READ_COUNTERS;
77 
78  uint8_t m_thermometerType = 1;
79  double m_temperature = -273.15;
80 
81  uint8_t m_powerVoltageType = 1;
82  double m_powerVoltage = 0.0;
83 
84  double m_iqrfSuplyVoltage = 0.0;
85  int m_rssi = 0;
86  int m_cntlen = 0;
87  int m_cnts = 0;
88  int m_cnt1 = 0;
89  int m_cnt2 = 0;
90  uint8_t m_cntsum = 0xff;
91  uint8_t m_datasum = 0xff;
92 
93  bool m_storeCounterResult = false;
94  bool m_disableAutosleepResult = false;
95 };
96 
98 {
99 public:
102  PrfPulseMeterJson(const rapidjson::Value& val);
103  void setNadr(uint16_t nadr);
104  virtual ~PrfPulseMeterJson() {}
105  std::string encodeResponse(const std::string& errStr) override;
106 };
int getRssi() const
Definition: PrfPulseMeter.h:61
bool getStoreCounterResult() const
Definition: PrfPulseMeter.h:68
int getCounter(CntNum cntNum) const
Definition: PrfPulseMeter.cpp:169
Definition: UdpMessage.h:52
void commandDisableAutosleep(bool enable)
Definition: PrfPulseMeter.cpp:74
CntNum
Definition: PrfPulseMeter.h:38
double getPowerVoltage() const
Definition: PrfPulseMeter.h:59
int getCnts() const
Definition: PrfPulseMeter.h:63
Cmd
Definition: PrfPulseMeter.h:26
void parseResponse(const DpaMessage &response) override
Definition: PrfPulseMeter.cpp:81
double getIqrfSuplyVoltage() const
Definition: PrfPulseMeter.h:60
static const std::string PRF_NAME
Definition: PrfPulseMeter.h:43
uint8_t getPowerVoltageType() const
Definition: PrfPulseMeter.h:58
Implements common features of JsonDpaMessage.
Definition: JsonSerializer.h:41
void parseCommand(const std::string &command) override
Definition: PrfPulseMeter.cpp:181
uint8_t getCntSum() const
Definition: PrfPulseMeter.h:65
virtual ~PrfPulseMeterJson()
Definition: PrfPulseMeter.h:104
bool getDisableAutosleepResult() const
Definition: PrfPulseMeter.h:69
const std::string & encodeCommand() const override
Definition: PrfPulseMeter.cpp:193
void commandStoreCounter(CntNum cntNum, uint32_t value)
Definition: PrfPulseMeter.cpp:58
double getTemperature() const
Definition: PrfPulseMeter.h:57
FrcCmd
Definition: PrfPulseMeter.h:32
Cmd getCmd() const
Definition: PrfPulseMeter.cpp:207
Definition: PrfPulseMeter.h:23
uint8_t getDataSum() const
Definition: PrfPulseMeter.h:66
uint8_t getThermometerType() const
Definition: PrfPulseMeter.h:56
int getCntLen() const
Definition: PrfPulseMeter.h:62
Definition: PrfPulseMeter.h:97
virtual ~PrfPulseMeter()
Definition: PrfPulseMeter.cpp:38
PrfPulseMeter()
Definition: PrfPulseMeter.cpp:32
void commandReadCounters(const std::chrono::seconds &sec)
Definition: PrfPulseMeter.cpp:42