IQRF Gateway Daemon
SimpleSerializer.h
Go to the documentation of this file.
1 
17 #pragma once
18 
19 #include "ISerializer.h"
20 #include "ObjectFactory.h"
21 #include "DpaRaw.h"
22 #include "PrfThermometer.h"
23 #include "PrfLeds.h"
24 #include "PlatformDep.h"
25 #include <algorithm>
26 #include <vector>
27 #include <string>
28 
30 std::vector<std::string> parseTokens(DpaTask& dpaTask, std::istream& istr);
31 void parseRequestSimple(DpaTask& dpaTask, std::vector<std::string>& tokens);
32 void encodeResponseSimple(const DpaTask & dt, std::ostream& ostr);
33 void encodeTokens(const DpaTask& dpaTask, const std::string& errStr, std::ostream& ostr);
34 
41 class PrfRawSimple : public DpaRaw
42 {
43 public:
46  explicit PrfRawSimple(std::istream& istr);
47  virtual ~PrfRawSimple() {};
48 
52  std::string encodeResponse(const std::string& errStr) override;
53 private:
54  bool m_dotNotation = true;
55 };
56 
61 class PrfThermometerSimple : public PrfThermometer
62 {
63 public:
66  explicit PrfThermometerSimple(std::istream& istr);
67  virtual ~PrfThermometerSimple() {};
68 
72  std::string encodeResponse(const std::string& errStr) override;
73 };
74 
79 template <typename L>
80 class PrfLedSimple : public L
81 {
82 public:
85  explicit PrfLedSimple(std::istream& istr) {
86  std::vector<std::string> v = parseTokens(*this, istr);
87  parseRequestSimple(*this, v);
88  }
89 
90  virtual ~PrfLedSimple() {}
91 
95  std::string encodeResponse(const std::string& errStr) override
96  {
97  std::ostringstream ostr;
98  encodeResponseSimple(*this, ostr);
99  ostr << " " << L::getLedState();
100 
101  encodeTokens(*this, errStr, ostr);
102 
103  return ostr.str();
104  }
105 };
106 
109 
112 
118 {
119 public:
121 
124  SimpleSerializer(const std::string& name);
125  virtual ~SimpleSerializer() {}
126 
128  const std::string& getName() const override { return m_name; }
129  std::string parseCategory(const std::string& request) override;
130  std::unique_ptr<DpaTask> parseRequest(const std::string& request) override;
131  std::string parseConfig(const std::string& request) override;
132  std::string encodeConfig(const std::string& request, const std::string& response) override;
133  std::string getLastError() const override;
134  std::string encodeAsyncAsDpaRaw(const DpaMessage& dpaMessage) const override;
135 
136 private:
138 
139  void init();
140  std::string m_lastError;
141  std::string m_name;
142 };
std::string encodeResponse(const std::string &errStr) override
DpaTask overriden method.
Definition: SimpleSerializer.h:95
Parse/encode simple message holding PrfLed.
Definition: SimpleSerializer.h:80
void encodeTokens(const DpaTask &dpaTask, const std::string &errStr, std::ostream &ostr)
Definition: SimpleSerializer.cpp:98
virtual ~SimpleSerializer()
Definition: SimpleSerializer.h:125
ISerializer interface.
Definition: ISerializer.h:31
const std::string & getName() const override
ISerializer overriden methods.
Definition: SimpleSerializer.h:128
PrfLedSimple(std::istream &istr)
parametric constructor
Definition: SimpleSerializer.h:85
Object factory to create DpaTask objects from incoming messages.
Definition: SimpleSerializer.h:117
std::string encodeResponse(const std::string &errStr) override
DpaTask overriden method.
Definition: SimpleSerializer.cpp:141
virtual ~PrfLedSimple()
Definition: SimpleSerializer.h:90
std::vector< std::string > parseTokens(DpaTask &dpaTask, std::istream &istr)
auxiliar parse/encode functions
Definition: SimpleSerializer.cpp:26
Parse/encode simple message holding PrfThermometer.
Definition: SimpleSerializer.h:61
PrfRawSimple(std::istream &istr)
parametric constructor
Definition: SimpleSerializer.cpp:114
virtual ~PrfRawSimple()
Definition: SimpleSerializer.h:47
virtual ~PrfThermometerSimple()
Definition: SimpleSerializer.h:67
Parse/encode simple message holding raw DPA message.
Definition: SimpleSerializer.h:41
void encodeResponseSimple(const DpaTask &dt, std::ostream &ostr)
Definition: SimpleSerializer.cpp:93
PrfLedSimple< PrfLedR > PrfLedRSimple
Type for embedded Red LED.
Definition: SimpleSerializer.h:111
PrfLedSimple< PrfLedG > PrfLedGSimple
Type for embedded Green LED.
Definition: SimpleSerializer.h:108
void parseRequestSimple(DpaTask &dpaTask, std::vector< std::string > &tokens)
Definition: SimpleSerializer.cpp:78