pds 2.1.0-alpha
Loading...
Searching...
No Matches
lsmPayload.hpp
Go to the documentation of this file.
1
2#pragma once
3
4#include "nlohmann/json.hpp"
5
6#include <optional>
7#include <stdexcept>
8#include <regex>
9
10namespace pds::maical::devices {
11 using nlohmann::json;
12
13 inline json get_untyped(const json & j, const char * property) {
14 if (j.find(property) != j.end()) {
15 return j.at(property).get<json>();
16 }
17 return json();
18 }
19
20 inline json get_untyped(const json & j, std::string property) {
21 return get_untyped(j, property.data());
22 }
23
24 class LsmPayload {
25 public:
26 LsmPayload() = default;
27 virtual ~LsmPayload() = default;
28
29 private:
30 std::string action;
31 std::optional<double> ch_vis = std::nullopt;
32 std::optional<double> ch_ir1 = std::nullopt;
33 std::optional<double> ch_ir2 = std::nullopt;
34 std::optional<int> on_duration = std::nullopt;
35
36
37 public:
38 const std::string & get_action() const { return action; }
39 std::string & get_mutable_action() { return action; }
40 void set_action(const std::string & value) { this->action = value; }
41
42 const double & get_ch_vis() const { return ch_vis.value(); }
43 bool has_ch_vis() const {return ch_vis.has_value(); }
44 double & get_mutable_ch_vis() { return ch_vis.value(); }
45 void set_ch_vis(const double & value) { this->ch_vis = value; }
46
47 const double & get_ch_ir1() const { return ch_ir1.value(); }
48 bool has_ch_ir1() const {return ch_ir1.has_value(); }
49 double & get_mutable_ch_ir1() { return ch_ir1.value(); }
50 void set_ch_ir1(const double & value) { this->ch_ir1 = value; }
51
52 const double & get_ch_ir2() const { return ch_ir2.value(); }
53 bool has_ch_ir2() const {return ch_ir2.has_value(); }
54 double & get_mutable_ch_ir2() { return ch_ir2.value(); }
55 void set_ch_ir2(const double & value) { this->ch_ir2 = value; }
56
57 const int & get_on_duration() const { return on_duration.value(); }
58 bool has_on_duration() const {return on_duration.has_value(); }
59 int & get_mutable_on_duration() { return on_duration.value(); }
60 void set_on_duration(const int & value) { this->on_duration = value; }
61
62 };
63}
64
65namespace nlohmann {
66 void from_json(const json & j, pds::maical::devices::LsmPayload & x);
67 void to_json(json & j, const pds::maical::devices::LsmPayload & x);
68
69 inline void from_json(const json & j, pds::maical::devices::LsmPayload& x) {
70 x.set_action(j.at("action").get<std::string>());
71
72 if (j.count("ch_vis") != 0) {
73 x.set_ch_vis(j.at("ch_vis").get<double>());
74 }
75
76 if (j.count("ch_ir1") != 0) {
77 x.set_ch_ir1(j.at("ch_ir1").get<double>());
78 }
79
80 if (j.count("ch_ir2") != 0) {
81 x.set_ch_ir2(j.at("ch_ir2").get<double>());
82 }
83
84 if (j.count("time") != 0) {
85 x.set_on_duration(j.at("time").get<int>());
86 }
87
88 }
89
90 inline void to_json(json & j, const pds::maical::devices::LsmPayload & x) {
91 j = json::object();
92 j["action"] = x.get_action();
93
94 if (x.has_ch_vis())
95 {
96 j["ch_vis"] = x.get_ch_vis();
97 }
98 if (x.has_ch_ir1())
99 {
100 j["ch_ir1"] = x.get_ch_ir1();
101 }
102 if (x.has_ch_ir2())
103 {
104 j["ch_ir2"] = x.get_ch_ir2();
105 }
106 if (x.has_on_duration())
107 {
108 j["time"] = x.get_on_duration();
109 }
110 }
111}
Definition lsmPayload.hpp:24
const double & get_ch_ir2() const
Definition lsmPayload.hpp:52
std::string & get_mutable_action()
Definition lsmPayload.hpp:39
void set_action(const std::string &value)
Definition lsmPayload.hpp:40
const int & get_on_duration() const
Definition lsmPayload.hpp:57
const double & get_ch_vis() const
Definition lsmPayload.hpp:42
void set_ch_ir2(const double &value)
Definition lsmPayload.hpp:55
double & get_mutable_ch_ir1()
Definition lsmPayload.hpp:49
double & get_mutable_ch_vis()
Definition lsmPayload.hpp:44
void set_on_duration(const int &value)
Definition lsmPayload.hpp:60
void set_ch_ir1(const double &value)
Definition lsmPayload.hpp:50
bool has_on_duration() const
Definition lsmPayload.hpp:58
const double & get_ch_ir1() const
Definition lsmPayload.hpp:47
bool has_ch_ir1() const
Definition lsmPayload.hpp:48
void set_ch_vis(const double &value)
Definition lsmPayload.hpp:45
bool has_ch_ir2() const
Definition lsmPayload.hpp:53
bool has_ch_vis() const
Definition lsmPayload.hpp:43
int & get_mutable_on_duration()
Definition lsmPayload.hpp:59
const std::string & get_action() const
Definition lsmPayload.hpp:38
double & get_mutable_ch_ir2()
Definition lsmPayload.hpp:54
Definition lsmPayload.hpp:65
void to_json(json &j, const pds::maical::devices::LsmPayload &x)
Definition lsmPayload.hpp:90
void from_json(const json &j, pds::maical::devices::LsmPayload &x)
Definition lsmPayload.hpp:69
Definition lsm.hpp:19
json get_untyped(const json &j, const char *property)
Definition lsmPayload.hpp:13