9 #include <mal/OpcUaMal.hpp>
10 #include <mal/util/OpcUaUtil.hpp>
11 #include <mal/ps/OpcUaDataEntity.hpp>
12 #include <mal/rr/OpcUaClientRrEntity.hpp>
13 #include <mal/bindings/opcua/OpcUaIcdBindings.hpp>
14 #include <mal/types/malTypesOpcUaImpl.hpp>
26 static constexpr
size_t dataValueCount =
28 + ::elt::mal::icd::opcua::Scalar<std::string>::dataValueCount
29 + ::elt::mal::icd::opcua::Scalar<std::string>::dataValueCount
32 static std::unique_ptr<::hellomalif::LogInfo> makeImpl();
33 static bool isImpl(const ::hellomalif::LogInfo*
object);
48 public ::elt::mal::ps::OpcUaDataEntity<::hellomalif::LogInfo>
54 return dm_level.get();
57 void setLevel(
const std::string& value)
override {
62 return dm_logger.get();
71 std::unique_ptr<::hellomalif::LogInfo>
clone()
const override {
72 return std::unique_ptr<::hellomalif::LogInfo>(
new LogInfo(*
this));
75 bool keyEquals(const ::hellomalif::LogInfo& other)
const override {
84 std::unique_ptr<::hellomalif::LogInfo>
cloneKey()
const override {
85 std::unique_ptr<::hellomalif::LogInfo> entity(
new LogInfo);
96 return ::elt::mal::icd::opcua::MalOpcUaTraits<::hellomalif::LogInfo>::dataValueCount;
100 resultIterator = dm_level.assignFromDataValue(
"::hellomalif::LogInfo.level", resultIterator);
101 resultIterator = dm_logger.assignFromDataValue(
"::hellomalif::LogInfo.logger", resultIterator);
105 auto* fieldIterator = m_dataValues.data();
107 fieldIterator = dm_level.assignToDataValue(fieldIterator);
108 fieldIterator = dm_logger.assignToDataValue(fieldIterator);
110 return m_dataValues.data();
113 void copy(const ::hellomalif::LogInfo& from)
override {
114 dm_level = from.getLevel();
115 dm_logger = from.getLogger();
120 ::elt::mal::icd::opcua::Scalar<std::string> dm_level;
121 ::elt::mal::icd::opcua::Scalar<std::string> dm_logger;
123 mutable std::array<UA_DataValue, ::elt::mal::icd::opcua::MalOpcUaTraits<::hellomalif::LogInfo>::dataValueCount> m_dataValues;
129 public virtual ::elt::mal::rr::OpcUaClientRrEntity<::hellomalif::StdCmdsAsync>
134 const ::elt::mal::Uri& uri,
135 const std::vector<std::shared_ptr<::elt::mal::rr::qos::QoS>>& standardQoS,
136 const ::elt::mal::Mal::Properties& malSpecificProperties,
137 const std::shared_ptr<::elt::mal::OpcUaMal>& mal)
139 ::
elt::mal::rr::OpcUaClientRrEntity<StdCmdsAsync>(uri, standardQoS, malSpecificProperties, mal)
143 ::elt::mal::future<std::string>
Init()
override {
144 const auto methodSeqNr = 0;
147 constexpr
size_t dataValueCount =
151 std::array<UA_Variant, dataValueCount> arguments;
153 const auto extractor = [](
const UA_Variant& resultVariant) {
154 ::elt::mal::icd::opcua::Scalar<std::string> result;
155 result.assignFromVariant(
"StdCmds::Init (return value)", &resultVariant);
159 return callMethodAsync<std::string>(methodSeqNr, arguments, extractor);
163 ::elt::mal::future<std::string>
Reset()
override {
164 const auto methodSeqNr = 1;
167 constexpr
size_t dataValueCount =
171 std::array<UA_Variant, dataValueCount> arguments;
173 const auto extractor = [](
const UA_Variant& resultVariant) {
174 ::elt::mal::icd::opcua::Scalar<std::string> result;
175 result.assignFromVariant(
"StdCmds::Reset (return value)", &resultVariant);
179 return callMethodAsync<std::string>(methodSeqNr, arguments, extractor);
183 ::elt::mal::future<std::string>
Enable()
override {
184 const auto methodSeqNr = 2;
187 constexpr
size_t dataValueCount =
191 std::array<UA_Variant, dataValueCount> arguments;
193 const auto extractor = [](
const UA_Variant& resultVariant) {
194 ::elt::mal::icd::opcua::Scalar<std::string> result;
195 result.assignFromVariant(
"StdCmds::Enable (return value)", &resultVariant);
199 return callMethodAsync<std::string>(methodSeqNr, arguments, extractor);
203 ::elt::mal::future<std::string>
Disable()
override {
204 const auto methodSeqNr = 3;
207 constexpr
size_t dataValueCount =
211 std::array<UA_Variant, dataValueCount> arguments;
213 const auto extractor = [](
const UA_Variant& resultVariant) {
214 ::elt::mal::icd::opcua::Scalar<std::string> result;
215 result.assignFromVariant(
"StdCmds::Disable (return value)", &resultVariant);
219 return callMethodAsync<std::string>(methodSeqNr, arguments, extractor);
223 ::elt::mal::future<std::string>
GetState()
override {
224 const auto methodSeqNr = 4;
227 constexpr
size_t dataValueCount =
231 std::array<UA_Variant, dataValueCount> arguments;
233 const auto extractor = [](
const UA_Variant& resultVariant) {
234 ::elt::mal::icd::opcua::Scalar<std::string> result;
235 result.assignFromVariant(
"StdCmds::GetState (return value)", &resultVariant);
239 return callMethodAsync<std::string>(methodSeqNr, arguments, extractor);
244 const auto methodSeqNr = 5;
247 constexpr
size_t dataValueCount =
251 std::array<UA_Variant, dataValueCount> arguments;
253 const auto extractor = [](
const UA_Variant& resultVariant) {
254 ::elt::mal::icd::opcua::Scalar<std::string> result;
255 result.assignFromVariant(
"StdCmds::GetStatus (return value)", &resultVariant);
259 return callMethodAsync<std::string>(methodSeqNr, arguments, extractor);
264 const auto methodSeqNr = 6;
267 constexpr
size_t dataValueCount =
271 std::array<UA_Variant, dataValueCount> arguments;
273 const auto extractor = [](
const UA_Variant& resultVariant) {
274 ::elt::mal::icd::opcua::Scalar<std::string> result;
275 result.assignFromVariant(
"StdCmds::GetVersion (return value)", &resultVariant);
279 return callMethodAsync<std::string>(methodSeqNr, arguments, extractor);
283 ::elt::mal::future<std::string>
Stop()
override {
284 const auto methodSeqNr = 7;
287 constexpr
size_t dataValueCount =
291 std::array<UA_Variant, dataValueCount> arguments;
293 const auto extractor = [](
const UA_Variant& resultVariant) {
294 ::elt::mal::icd::opcua::Scalar<std::string> result;
295 result.assignFromVariant(
"StdCmds::Stop (return value)", &resultVariant);
299 return callMethodAsync<std::string>(methodSeqNr, arguments, extractor);
303 ::elt::mal::future<std::string>
Exit()
override {
304 const auto methodSeqNr = 8;
307 constexpr
size_t dataValueCount =
311 std::array<UA_Variant, dataValueCount> arguments;
313 const auto extractor = [](
const UA_Variant& resultVariant) {
314 ::elt::mal::icd::opcua::Scalar<std::string> result;
315 result.assignFromVariant(
"StdCmds::Exit (return value)", &resultVariant);
319 return callMethodAsync<std::string>(methodSeqNr, arguments, extractor);
323 ::elt::mal::future<std::string>
SetLogLevel(
const std::shared_ptr<::hellomalif::LogInfo>& info)
override {
324 const auto methodSeqNr = 9;
326 ::elt::mal::icd::opcua::NestedStructure<::hellomalif::LogInfo> arg_info;
329 constexpr
size_t dataValueCount =
331 + decltype(arg_info)::dataValueCount
334 std::array<UA_Variant, dataValueCount> arguments;
335 auto* argIterator = arguments.data();
337 argIterator = arg_info.assignToVariant(argIterator);
339 const auto extractor = [](
const UA_Variant& resultVariant) {
340 ::elt::mal::icd::opcua::Scalar<std::string> result;
341 result.assignFromVariant(
"StdCmds::SetLogLevel (return value)", &resultVariant);
345 return callMethodAsync<std::string>(methodSeqNr, arguments, extractor);
352 public virtual ::elt::mal::rr::OpcUaSyncClientBase
357 const ::elt::mal::Uri& uri,
358 const std::vector<std::shared_ptr<::elt::mal::rr::qos::QoS>>& standardQoS,
359 const ::elt::mal::Mal::Properties& malSpecificProperties,
360 const std::shared_ptr<::elt::mal::OpcUaMal>& mal)
362 ::
elt::mal::rr::OpcUaSyncClientBase(uri, standardQoS, malSpecificProperties, mal),
363 m_asyncClient(uri, standardQoS, malSpecificProperties, mal)
368 return unpackAsync(m_asyncClient.
Init());
373 return unpackAsync(m_asyncClient.
Reset());
378 return unpackAsync(m_asyncClient.
Enable());
383 return unpackAsync(m_asyncClient.
Disable());
388 return unpackAsync(m_asyncClient.
GetState());
393 return unpackAsync(m_asyncClient.
GetStatus());
398 return unpackAsync(m_asyncClient.
GetVersion());
403 return unpackAsync(m_asyncClient.
Stop());
408 return unpackAsync(m_asyncClient.
Exit());
412 std::string
SetLogLevel(
const std::shared_ptr<::hellomalif::LogInfo>& info)
override {
413 return unpackAsync(m_asyncClient.
SetLogLevel(info));
418 return m_asyncClient.asyncConnect();
421 ::elt::mal::rr::ListenerRegistration
423 return m_asyncClient.registerConnectionListener(std::move(listener));