aboutsummaryrefslogtreecommitdiffstats
path: root/src/OpcUaMonitoredNode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/OpcUaMonitoredNode.cpp')
-rw-r--r--src/OpcUaMonitoredNode.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/OpcUaMonitoredNode.cpp b/src/OpcUaMonitoredNode.cpp
index c5f1dc0..9155838 100644
--- a/src/OpcUaMonitoredNode.cpp
+++ b/src/OpcUaMonitoredNode.cpp
@@ -155,6 +155,8 @@ OpcUaMonitoredNode::setupNode ()
m_node->readAttributes (
QOpcUa::NodeAttribute::DisplayName | QOpcUa::NodeAttribute::Description
| QOpcUa::NodeAttribute::NodeClass | QOpcUa::NodeAttribute::DataType
+ | QOpcUa::NodeAttribute::ValueRank
+ | QOpcUa::NodeAttribute::ArrayDimensions
| QOpcUa::NodeAttribute::AccessLevel);
if (m_monitored)
@@ -238,6 +240,45 @@ OpcUaMonitoredNode::handleAttributeUpdated (QOpcUa::NodeAttribute attr,
m_info.dataType = rawId;
}
break;
+ case QOpcUa::NodeAttribute::ValueRank:
+ {
+ qint32 vr = value.toInt ();
+ switch (vr)
+ {
+ case -3:
+ m_info.valueRank = QStringLiteral ("ScalarOrOneDimension");
+ break;
+ case -2:
+ m_info.valueRank = QStringLiteral ("Any");
+ break;
+ case -1:
+ m_info.valueRank = QStringLiteral ("Scalar");
+ break;
+ case 0:
+ m_info.valueRank = QStringLiteral ("OneOrMoreDimensions");
+ break;
+ case 1:
+ m_info.valueRank = QStringLiteral ("OneDimension");
+ break;
+ case 2:
+ m_info.valueRank = QStringLiteral ("TwoDimensions");
+ break;
+ default:
+ m_info.valueRank = QString::number (vr)
+ + QStringLiteral ("Dimensions");
+ break;
+ }
+ }
+ break;
+ case QOpcUa::NodeAttribute::ArrayDimensions:
+ {
+ QStringList dims;
+ const QVariantList list = value.toList ();
+ for (const QVariant &dim : list)
+ dims << QString::number (dim.toUInt ());
+ m_info.arrayDimensions = dims.join (QStringLiteral (", "));
+ }
+ break;
case QOpcUa::NodeAttribute::AccessLevel:
{
quint32 bits = value.toUInt ();