diff options
Diffstat (limited to 'src/plugins/opcua/open62541/qopen62541subscription.h')
-rw-r--r-- | src/plugins/opcua/open62541/qopen62541subscription.h | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/src/plugins/opcua/open62541/qopen62541subscription.h b/src/plugins/opcua/open62541/qopen62541subscription.h index a572817..b20b50f 100644 --- a/src/plugins/opcua/open62541/qopen62541subscription.h +++ b/src/plugins/opcua/open62541/qopen62541subscription.h @@ -55,21 +55,23 @@ public: UA_UInt32 createOnServer(); bool removeOnServer(); - void modifyMonitoring(uintptr_t handle, QOpcUa::NodeAttribute attr, QOpcUaMonitoringParameters::Parameter item, QVariant value); + void modifyMonitoring(quint64 handle, QOpcUa::NodeAttribute attr, QOpcUaMonitoringParameters::Parameter item, QVariant value); - bool addAttributeMonitoredItem(uintptr_t handle, QOpcUa::NodeAttribute attr, const UA_NodeId &id, QOpcUaMonitoringParameters settings); - bool removeAttributeMonitoredItem(uintptr_t handle, QOpcUa::NodeAttribute attr); + bool addAttributeMonitoredItem(quint64 handle, QOpcUa::NodeAttribute attr, const UA_NodeId &id, QOpcUaMonitoringParameters settings); + bool removeAttributeMonitoredItem(quint64 handle, QOpcUa::NodeAttribute attr); void monitoredValueUpdated(UA_UInt32 monId, UA_DataValue *value); + void eventReceived(UA_UInt32 monId, QVariantList list); + void sendTimeoutNotification(); struct MonitoredItem { - uintptr_t handle; + quint64 handle; QOpcUa::NodeAttribute attr; UA_UInt32 monitoredItemId; UA_UInt32 clientHandle; QOpcUaMonitoringParameters parameters; - MonitoredItem(uintptr_t h, QOpcUa::NodeAttribute a, UA_UInt32 id) + MonitoredItem(quint64 h, QOpcUa::NodeAttribute a, UA_UInt32 id) : handle(h) , attr(a) , monitoredItemId(id) @@ -87,14 +89,20 @@ public: QOpcUaMonitoringParameters::SubscriptionType shared() const; signals: - void timeout(QOpen62541Subscription *sub, QVector<QPair<uintptr_t, QOpcUa::NodeAttribute>> items); + void timeout(QOpen62541Subscription *sub, QVector<QPair<quint64, QOpcUa::NodeAttribute>> items); private: - MonitoredItem *getItemForAttribute(uintptr_t handle, QOpcUa::NodeAttribute attr); + MonitoredItem *getItemForAttribute(quint64 handle, QOpcUa::NodeAttribute attr); UA_ExtensionObject createFilter(const QVariant &filterData); + void createDataChangeFilter(const QOpcUaMonitoringParameters::DataChangeFilter &filter, UA_ExtensionObject *out); + void createEventFilter(const QOpcUaMonitoringParameters::EventFilter &filter, UA_ExtensionObject *out); + bool convertSelectClause(const QOpcUaMonitoringParameters::EventFilter &filter, + UA_SimpleAttributeOperand **selectClauses, size_t *size); + bool convertWhereClause(const QOpcUaMonitoringParameters::EventFilter &filter, UA_ContentFilter *result); - bool modifySubscriptionParameters(uintptr_t handle, QOpcUa::NodeAttribute attr, const QOpcUaMonitoringParameters::Parameter &item, const QVariant &value); - bool modifyMonitoredItemParameters(uintptr_t handle, QOpcUa::NodeAttribute attr, const QOpcUaMonitoringParameters::Parameter &item, const QVariant &value); + bool modifySubscriptionParameters(quint64 handle, QOpcUa::NodeAttribute attr, const QOpcUaMonitoringParameters::Parameter &item, const QVariant &value); + bool modifyMonitoredItemParameters(quint64 handle, QOpcUa::NodeAttribute attr, const QOpcUaMonitoringParameters::Parameter &item, const QVariant &value); + QOpcUa::QEventFilterResult convertEventFilterResult(UA_ExtensionObject *obj); Open62541AsyncBackend *m_backend; double m_interval; @@ -105,7 +113,7 @@ private: quint8 m_priority; quint32 m_maxNotificationsPerPublish; - QHash<uintptr_t, QHash<QOpcUa::NodeAttribute, MonitoredItem *>> m_handleToItemMapping; // Handle -> Attribute -> MonitoredItem + QHash<quint64, QHash<QOpcUa::NodeAttribute, MonitoredItem *>> m_handleToItemMapping; // Handle -> Attribute -> MonitoredItem QHash<UA_UInt32, MonitoredItem *> m_itemIdToItemMapping; // ItemId -> Item for fast lookup on data change quint32 m_clientHandle; |