1// Copyright (C) 2017 basysKom GmbH, opensource@basyskom.com
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QOPCUAMONITORINGPARAMETERS_H
5#define QOPCUAMONITORINGPARAMETERS_H
6
7#include <QtOpcUa/qopcuacontentfilterelement.h>
8#include <QtOpcUa/qopcuasimpleattributeoperand.h>
9
10#include <QtCore/qset.h>
11#include <QtCore/qshareddata.h>
12
13QT_BEGIN_NAMESPACE
14
15class QOpcUaEventFilterResult;
16
17class QOpcUaMonitoringParametersPrivate;
18
19class Q_OPCUA_EXPORT QOpcUaMonitoringParameters
20{
21 Q_GADGET
22
23public:
24
25 enum class MonitoringMode {
26 Disabled = 0,
27 Sampling = 1,
28 Reporting = 2,
29 };
30
31 enum class SubscriptionType {
32 Shared,
33 Exclusive,
34 };
35
36 enum class Parameter {
37 PublishingEnabled = (1 << 0),
38 PublishingInterval = (1 << 1),
39 LifetimeCount = (1 << 2),
40 MaxKeepAliveCount = (1 << 3),
41 MaxNotificationsPerPublish = (1 << 4),
42 Priority = (1 << 5),
43 SamplingInterval = (1 << 6),
44 Filter = (1 << 7),
45 QueueSize = (1 << 8),
46 DiscardOldest = (1 << 9),
47 MonitoringMode = (1 << 10),
48 TriggeredItemIds = (1 << 11),
49 };
50 Q_ENUM(Parameter)
51 Q_DECLARE_FLAGS(Parameters, Parameter)
52
53 // This type and the enums are defined in OPC UA 1.05 part 4, 7.22.2
54 class DataChangeFilterData;
55 class Q_OPCUA_EXPORT DataChangeFilter
56 {
57 public:
58 enum class DataChangeTrigger {
59 Status = 0,
60 StatusOrValue = 1,
61 StatusOrValueOrTimestamp = 2,
62 };
63
64 enum class DeadbandType {
65 None = 0,
66 Absolute = 1,
67 Percent = 2,
68 };
69
70 DataChangeFilter();
71 DataChangeFilter(const DataChangeFilter &);
72 DataChangeFilter(DataChangeTrigger trigger, DeadbandType deadbandType, double deadbandValue);
73 DataChangeFilter &operator=(const DataChangeFilter &);
74 bool operator==(const DataChangeFilter &rhs) const;
75 operator QVariant() const;
76 ~DataChangeFilter();
77
78 DataChangeTrigger trigger() const;
79 void setTrigger(DataChangeTrigger trigger);
80
81 DeadbandType deadbandType() const;
82 void setDeadbandType(DeadbandType deadbandType);
83
84 double deadbandValue() const;
85 void setDeadbandValue(double deadbandValue);
86
87 private:
88 QSharedDataPointer<DataChangeFilterData> data;
89 };
90
91 class EventFilterData;
92 class Q_OPCUA_EXPORT EventFilter
93 {
94 public:
95 EventFilter();
96 EventFilter(const EventFilter &);
97 EventFilter &operator=(const EventFilter &);
98 operator QVariant const();
99 bool operator==(const QOpcUaMonitoringParameters::EventFilter &rhs) const;
100 EventFilter &operator<<(const QOpcUaContentFilterElement &whereClauseElement);
101 EventFilter &operator<<(const QOpcUaSimpleAttributeOperand &selectClauseElement);
102 ~EventFilter();
103
104 QList<QOpcUaSimpleAttributeOperand> selectClauses() const;
105 QList<QOpcUaSimpleAttributeOperand> &selectClausesRef();
106 void setSelectClauses(const QList<QOpcUaSimpleAttributeOperand> &selectClauses);
107
108 QList<QOpcUaContentFilterElement> whereClause() const;
109 QList<QOpcUaContentFilterElement> &whereClauseRef();
110 void setWhereClause(const QList<QOpcUaContentFilterElement> &whereClause);
111
112 private:
113 QSharedDataPointer<QOpcUaMonitoringParameters::EventFilterData> data;
114 };
115
116 QOpcUaMonitoringParameters();
117 ~QOpcUaMonitoringParameters();
118 QOpcUaMonitoringParameters(double publishingInterval, SubscriptionType subscriptionType = SubscriptionType::Shared, quint32 subscriptionId = 0);
119 QOpcUaMonitoringParameters(const QOpcUaMonitoringParameters &other);
120 QOpcUaMonitoringParameters &operator=(const QOpcUaMonitoringParameters &other);
121
122 double samplingInterval() const;
123 void setSamplingInterval(double samplingInterval);
124 QVariant filter() const;
125 void setFilter(const QOpcUaMonitoringParameters::DataChangeFilter &filter);
126 void setFilter(const QOpcUaMonitoringParameters::EventFilter &eventFilter);
127 void clearFilter();
128 QVariant filterResult() const;
129 void setFilterResult(const QOpcUaEventFilterResult &eventFilterResult);
130 void clearFilterResult();
131 quint32 queueSize() const;
132 void setQueueSize(quint32 queueSize);
133 bool discardOldest() const;
134 void setDiscardOldest(bool discardOldest);
135 QOpcUaMonitoringParameters::MonitoringMode monitoringMode() const;
136 void setMonitoringMode(MonitoringMode monitoringMode);
137 quint32 subscriptionId() const;
138 void setSubscriptionId(quint32 subscriptionId);
139 quint32 monitoredItemId() const;
140 void setMonitoredItemId(quint32 monitoredItemId);
141 double publishingInterval() const;
142 void setPublishingInterval(double publishingInterval);
143 quint32 lifetimeCount() const;
144 void setLifetimeCount(quint32 lifetimeCount);
145 quint32 maxKeepAliveCount() const;
146 void setMaxKeepAliveCount(quint32 maxKeepAliveCount);
147 quint32 maxNotificationsPerPublish() const;
148 void setMaxNotificationsPerPublish(quint32 maxNotificationsPerPublish);
149 quint8 priority() const;
150 void setPriority(quint8 priority);
151 bool isPublishingEnabled() const;
152 void setPublishingEnabled(bool publishingEnabled);
153 QOpcUa::UaStatusCode statusCode() const;
154 void setStatusCode(QOpcUa::UaStatusCode statusCode);
155 QOpcUaMonitoringParameters::SubscriptionType subscriptionType() const;
156 void setSubscriptionType(SubscriptionType subscriptionType);
157 QString indexRange() const;
158 void setIndexRange(const QString &indexRange);
159 QSet<quint32> triggeredItemIds() const;
160 void setTriggeredItemIds(const QSet<quint32> &id);
161 QHash<quint32, QOpcUa::UaStatusCode> failedTriggeredItemsStatus() const;
162 void setFailedTriggeredItemsStatus(const QHash<quint32, QOpcUa::UaStatusCode> &status);
163
164private:
165 QSharedDataPointer<QOpcUaMonitoringParametersPrivate> d_ptr;
166};
167
168Q_DECLARE_TYPEINFO(QOpcUaMonitoringParameters::SubscriptionType, Q_PRIMITIVE_TYPE);
169Q_DECLARE_TYPEINFO(QOpcUaMonitoringParameters::DataChangeFilter::DataChangeTrigger, Q_PRIMITIVE_TYPE);
170Q_DECLARE_TYPEINFO(QOpcUaMonitoringParameters::DataChangeFilter::DeadbandType, Q_PRIMITIVE_TYPE);
171Q_DECLARE_OPERATORS_FOR_FLAGS(QOpcUaMonitoringParameters::Parameters)
172
173QT_END_NAMESPACE
174
175Q_DECLARE_METATYPE(QOpcUaMonitoringParameters)
176Q_DECLARE_METATYPE(QOpcUaMonitoringParameters::SubscriptionType)
177Q_DECLARE_METATYPE(QOpcUaMonitoringParameters::DataChangeFilter)
178Q_DECLARE_METATYPE(QOpcUaMonitoringParameters::DataChangeFilter::DataChangeTrigger)
179Q_DECLARE_METATYPE(QOpcUaMonitoringParameters::DataChangeFilter::DeadbandType)
180Q_DECLARE_METATYPE(QOpcUaMonitoringParameters::Parameter)
181Q_DECLARE_METATYPE(QOpcUaMonitoringParameters::Parameters)
182Q_DECLARE_METATYPE(QOpcUaMonitoringParameters::MonitoringMode)
183Q_DECLARE_METATYPE(QOpcUaMonitoringParameters::EventFilter)
184
185#endif // QOPCUAMONITORINGPARAMETERS_H
186

Provided by KDAB

Privacy Policy
Learn Advanced QML with KDAB
Find out more

source code of qtopcua/src/opcua/client/qopcuamonitoringparameters.h