summaryrefslogtreecommitdiffstats
path: root/src/plugins/opcua/open62541/qopen62541backend.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/opcua/open62541/qopen62541backend.h')
-rw-r--r--src/plugins/opcua/open62541/qopen62541backend.h31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/plugins/opcua/open62541/qopen62541backend.h b/src/plugins/opcua/open62541/qopen62541backend.h
index 4445f90..d6e2a80 100644
--- a/src/plugins/opcua/open62541/qopen62541backend.h
+++ b/src/plugins/opcua/open62541/qopen62541backend.h
@@ -35,6 +35,7 @@
****************************************************************************/
#include "qopen62541client.h"
+#include "qopen62541subscription.h"
#include <private/qopcuabackend_p.h>
#include <QtCore/qset.h>
@@ -50,6 +51,7 @@ class Open62541AsyncBackend : public QOpcUaBackend
Q_OBJECT
public:
Open62541AsyncBackend(QOpen62541Client *parent);
+ ~Open62541AsyncBackend();
public Q_SLOTS:
void connectToEndpoint(const QUrl &url);
@@ -61,18 +63,31 @@ public Q_SLOTS:
void writeAttribute(uintptr_t handle, UA_NodeId id, QOpcUaNode::NodeAttribute attrId, QVariant value, QOpcUa::Types type);
void writeAttributes(uintptr_t handle, UA_NodeId id, QOpcUaNode::AttributeMap toWrite, QOpcUa::Types valueAttributeType);
+ void enableMonitoring(uintptr_t handle, UA_NodeId id, QOpcUaNode::NodeAttributes attr, const QOpcUaMonitoringParameters &settings);
+ void disableMonitoring(uintptr_t handle, QOpcUaNode::NodeAttributes attr);
+ void modifyMonitoring(uintptr_t handle, QOpcUaNode::NodeAttribute attr, QOpcUaMonitoringParameters::Parameter item, QVariant value);
// Subscription
- UA_UInt32 createSubscription(int interval);
- void deleteSubscription(UA_UInt32 id);
- void updatePublishSubscriptionRequests() const;
- void activateSubscriptionTimer(int timeout);
- void removeSubscriptionTimer(int timeout);
+ QOpen62541Subscription *getSubscription(const QOpcUaMonitoringParameters &settings);
+ bool removeSubscription(UA_UInt32 subscriptionId);
+ void sendPublishRequest();
+ void modifyPublishRequests();
+
public:
- QOpen62541Client *m_clientImpl;
UA_Client *m_uaclient;
- QTimer *m_subscriptionTimer;
- QSet<int> m_subscriptionIntervals;
+
+private:
+ QOpen62541Subscription *getSubscriptionForItem(uintptr_t handle, QOpcUaNode::NodeAttribute attr);
+
+ QOpen62541Client *m_clientImpl;
+ QTimer m_subscriptionTimer;
+
+ QHash<quint32, QOpen62541Subscription *> m_subscriptions;
+
+ QHash<uintptr_t, QHash<QOpcUaNode::NodeAttribute, QOpen62541Subscription *>> m_attributeMapping; // Handle -> Attribute -> Subscription
+
+ bool m_sendPublishRequests;
+ qint32 m_shortestInterval;
};
QT_END_NAMESPACE