summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJannis Voelker <jannis.voelker@basyskom.com>2018-04-06 10:59:44 +0200
committerFrank Meerkoetter <frank.meerkoetter@basyskom.com>2018-04-11 09:58:10 +0000
commitef0d2cd86b4f2d11db267b9ae77f89be1c798daa (patch)
tree6e2d62723886aa5e276e0035e48ae05b4d6c7a87
parent8b7fa3f9b8b750fb39f27e588ed9d48ae56ed405 (diff)
Return blob for unknown extension object typesv5.11.0-beta4
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 <frank.meerkoetter@basyskom.com> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
-rw-r--r--src/plugins/opcua/open62541/qopen62541valueconverter.cpp5
-rw-r--r--src/plugins/opcua/uacpp/quacppvalueconverter.cpp5
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<QVariant, UA_ExtensionObject>(UA_ExtensionObject *data
result = QVariant::fromValue(QOpcUaBinaryDataEncoding::decode<QOpcUa::QXValue>(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<QVariant, OpcUa_ExtensionObject>(OpcUa_ExtensionObject
result = QVariant::fromValue(QOpcUaBinaryDataEncoding::decode<QOpcUa::QXValue>(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)