From ef0d2cd86b4f2d11db267b9ae77f89be1c798daa Mon Sep 17 00:00:00 2001 From: Jannis Voelker Date: Fri, 6 Apr 2018 10:59:44 +0200 Subject: Return blob for unknown extension object types Currently, unsupported extension objects are returned as an empty QVariant. Returning the raw data instead as it is done by the OPC UA SDKs allows the user to decode the value himself. Change-Id: I405bc6dbee7f3a91838548f8728da81f76952322 Reviewed-by: Frank Meerkoetter Reviewed-by: Maurice Kalinowski --- src/plugins/opcua/open62541/qopen62541valueconverter.cpp | 5 +++-- src/plugins/opcua/uacpp/quacppvalueconverter.cpp | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/plugins/opcua/open62541/qopen62541valueconverter.cpp b/src/plugins/opcua/open62541/qopen62541valueconverter.cpp index 2539784..cfdf59d 100644 --- a/src/plugins/opcua/open62541/qopen62541valueconverter.cpp +++ b/src/plugins/opcua/open62541/qopen62541valueconverter.cpp @@ -384,8 +384,9 @@ QVariant scalarToQVariant(UA_ExtensionObject *data result = QVariant::fromValue(QOpcUaBinaryDataEncoding::decode(buffer, length, success)); break; default: - qCWarning(QT_OPCUA_PLUGINS_OPEN62541) << "Unknown extension object type: ns=0;i=" << data->content.encoded.typeId.identifier.numeric; - return QVariant(); + qCWarning(QT_OPCUA_PLUGINS_OPEN62541) << "Unknown extension object type, returning raw data:" << Open62541Utils::nodeIdToQString(data->content.encoded.typeId); + result = QByteArray(buffer, data->content.encoded.body.length); + success = true; } if (success) diff --git a/src/plugins/opcua/uacpp/quacppvalueconverter.cpp b/src/plugins/opcua/uacpp/quacppvalueconverter.cpp index 0f48c0e..1b4e9f5 100644 --- a/src/plugins/opcua/uacpp/quacppvalueconverter.cpp +++ b/src/plugins/opcua/uacpp/quacppvalueconverter.cpp @@ -310,8 +310,9 @@ QVariant scalarToQVariant(OpcUa_ExtensionObject result = QVariant::fromValue(QOpcUaBinaryDataEncoding::decode(buffer, length, success)); break; default: - qCWarning(QT_OPCUA_PLUGINS_UACPP, "Unknown extension object type: ns=0;i=%d", data->TypeId.NodeId.Identifier.Numeric); - return QVariant(); + qCWarning(QT_OPCUA_PLUGINS_UACPP) << "Unknown extension object type, returning raw data:" << UACppUtils::nodeIdToQString(data->TypeId.NodeId); + result = QByteArray(buffer, length); + success = true; } if (success) -- cgit v1.2.3