cvtdriver
Driver for SmartFarm Device Converter
cvtdevicefactory.h
이 파일의 문서화 페이지로 가기
1 
12 #ifndef _CVT_DEVICE_FACTORY_
13 #define _CVT_DEVICE_FACTORY_
14 
15 #include <jsoncons/json.hpp>
16 #include <jsoncons_ext/jsonpath/json_query.hpp>
17 
18 #include "cvtdevice.h"
19 #include "cvtcodedic.h"
20 
21 using namespace std;
22 using namespace stdcvt;
23 
24 using jsoncons::json;
25 using jsoncons::jsonpath::json_query;
26 
27 namespace stdcvt {
28 
29 /*
30  @brief CvtDeviceFactory는 설정파일에 포함된 장비관련 설정을 전달하기위한 클래스이다.
31  장비스펙을 용이하게 전달하기위한 용도로 활용될 수 있다.
32 */
34 private:
35  json _sensors;
36  json _motors;
37  json _switches;
38 
39 public:
44  }
45 
46  ~CvtDeviceFactory() {
47  }
48 
53  void setsensors(json sensors) {
54  _sensors = sensors;
55  }
56 
61  void setmotors(json motors) {
62  _motors = motors;
63  }
64 
69  void setswitches(json switches) {
70  _switches = switches;
71  }
72 
79  CvtSensor *newsensor(int index) {
80  try {
81  string id = (_sensors)[index]["id"].as<string>();
82  devtype_t devtype = (devtype_t)_codedic[_sensors[index]["type"].as<string>()];
83  devsec_t section = (devsec_t)_codedic[_sensors[index]["section"].as<string>()];
84  devtarget_t target = (devtarget_t)_codedic[_sensors[index]["target"].as<string>()];
85  devstat_t devstatus = (devstat_t)_codedic[_sensors[index]["status"].as<string>()];
86  obsunit_t unit = (obsunit_t)_codedic[_sensors[index]["unit"].as<string>()];
87 
88  return new CvtSensor (id, devtype, section, target, devstatus, unit);
89  } catch (...) {
90  return nullptr;
91  }
92  }
93 
100  CvtActuator *newswitch(int index) {
101  try {
102  string id = (_switches)[index]["id"].as<string>();
103  devtype_t devtype = (devtype_t)_codedic[_switches[index]["type"].as<string>()];
104  devsec_t section = (devsec_t)_codedic[_switches[index]["section"].as<string>()];
105  devtarget_t target = (devtarget_t)_codedic[_switches[index]["target"].as<string>()];
106  devstat_t devstatus = (devstat_t)_codedic[_switches[index]["status"].as<string>()];
107 
108  return new CvtActuator (id, devtype, section, target, devstatus);
109  } catch (...) {
110  return nullptr;
111  }
112  }
113 
120  CvtMotor *newmotor(int index) {
121  try {
122  string id = (_motors)[index]["id"].as<string>();
123  devtype_t devtype = (devtype_t)_codedic[_motors[index]["type"].as<string>()];
124  devsec_t section = (devsec_t)_codedic[_motors[index]["section"].as<string>()];
125  devtarget_t target = (devtarget_t)_codedic[_motors[index]["target"].as<string>()];
126  devstat_t devstatus = (devstat_t)_codedic[_motors[index]["status"].as<string>()];
127 
128  return new CvtMotor (id, devtype, section, target, devstatus);
129  } catch (...) {
130  return nullptr;
131  }
132  }
133 };
134 
135 } // namespace stdcvt
136 #endif
devtype_t
Definition: cvtcode.h:63
void setmotors(json motors)
Definition: cvtdevicefactory.h:61
devstat_t
Definition: cvtcode.h:29
Definition: cvtdevice.h:393
void setsensors(json sensors)
Definition: cvtdevicefactory.h:53
Definition: cvtdevice.h:254
Definition: cvtdevice.h:141
CvtActuator * newswitch(int index)
Definition: cvtdevicefactory.h:100
CvtDeviceFactory()
Definition: cvtdevicefactory.h:43
CvtMotor * newmotor(int index)
Definition: cvtdevicefactory.h:120
long devsec_t
Definition: cvtcode.h:19
void setswitches(json switches)
Definition: cvtdevicefactory.h:69
devtarget_t
Definition: cvtcode.h:40
obsunit_t
Definition: cvtcode.h:103
Definition: cvtdevicefactory.h:33
Definition: cvtcode.h:17
CvtSensor * newsensor(int index)
Definition: cvtdevicefactory.h:79