summaryrefslogtreecommitdiffstats
path: root/tests/open62541-testserver/testserver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/open62541-testserver/testserver.cpp')
-rw-r--r--tests/open62541-testserver/testserver.cpp25
1 files changed, 23 insertions, 2 deletions
diff --git a/tests/open62541-testserver/testserver.cpp b/tests/open62541-testserver/testserver.cpp
index 46a8135..b3b2448 100644
--- a/tests/open62541-testserver/testserver.cpp
+++ b/tests/open62541-testserver/testserver.cpp
@@ -237,6 +237,10 @@ bool TestServer::init()
success = createInsecureServerConfig(m_config);
#endif
+ m_gathering = UA_HistoryDataGathering_Default(1);
+ m_config->historyDatabase = UA_HistoryDatabase_default(m_gathering);
+
+
if (!success || !m_config)
return false;
@@ -356,7 +360,7 @@ UA_NodeId TestServer::addVariableWithWriteMask(const UA_NodeId &folder, const QS
}
UA_NodeId TestServer::addVariable(const UA_NodeId &folder, const QString &variableNode, const QString &name, const QVariant &value,
- QOpcUa::Types type, QList<quint32> arrayDimensions, int valueRank)
+ QOpcUa::Types type, QList<quint32> arrayDimensions, int valueRank, bool enableHistorizing, quint32 historyNumValuesPerNode)
{
UA_NodeId variableNodeId = Open62541Utils::nodeIdFromQString(variableNode);
@@ -367,8 +371,13 @@ UA_NodeId TestServer::addVariable(const UA_NodeId &folder, const QString &variab
attr.valueRank = valueRank;
attr.displayName = UA_LOCALIZEDTEXT_ALLOC("en-US", name.toUtf8().constData());
attr.dataType = attr.value.type ? attr.value.type->typeId : UA_TYPES[UA_TYPES_BOOLEAN].typeId;
- attr.accessLevel = UA_ACCESSLEVELMASK_READ | UA_ACCESSLEVELMASK_WRITE;
+ if (enableHistorizing) {
+ attr.accessLevel = UA_ACCESSLEVELMASK_READ | UA_ACCESSLEVELMASK_WRITE | UA_ACCESSLEVELMASK_HISTORYREAD;
+ } else {
+ attr.accessLevel = UA_ACCESSLEVELMASK_READ | UA_ACCESSLEVELMASK_WRITE;
+ }
attr.description = UA_LOCALIZEDTEXT_ALLOC("en-US", description.toUtf8().constData());
+ attr.historizing = enableHistorizing;
if (arrayDimensions.size()) {
attr.arrayDimensionsSize = arrayDimensions.size();
@@ -394,6 +403,18 @@ UA_NodeId TestServer::addVariable(const UA_NodeId &folder, const QString &variab
attr.arrayDimensions = nullptr;
attr.arrayDimensionsSize = 0;
+ if (enableHistorizing) {
+ UA_HistorizingNodeIdSettings setting;
+ setting.historizingBackend = UA_HistoryDataBackend_Memory(1, 10);
+ setting.maxHistoryDataResponseSize = historyNumValuesPerNode;
+ setting.historizingUpdateStrategy = UA_HISTORIZINGUPDATESTRATEGY_VALUESET;
+ result = m_gathering.registerNodeId(m_server, m_gathering.context, &resultId, setting);
+ if (result != UA_STATUSCODE_GOOD) {
+ qWarning() << "Could not register node for historical data:" << result << "for node" << variableNode;
+ return UA_NODEID_NULL;
+ }
+ }
+
UA_NodeId_deleteMembers(&variableNodeId);
UA_VariableAttributes_deleteMembers(&attr);