diff --git a/changelog/changelog b/changelog/changelog index 1d8f725..0877303 100644 --- a/changelog/changelog +++ b/changelog/changelog @@ -5,6 +5,7 @@ ## Bug fixes +- [#32](https://github.com/openDAQ/OpcUaModules/pull/32) Filter-out duplicating method-properties. - [#9](https://github.com/openDAQ/OpcUaModules/pull/9) Fix appending dependent boost components. ## Documenation diff --git a/module_version b/module_version index 0c89fc9..cc868b6 100644 --- a/module_version +++ b/module_version @@ -1 +1 @@ -4.0.0 \ No newline at end of file +4.0.1 \ No newline at end of file diff --git a/shared/libraries/opcuatms/opcuatms_client/include/opcuatms_client/objects/tms_client_property_object_impl.h b/shared/libraries/opcuatms/opcuatms_client/include/opcuatms_client/objects/tms_client_property_object_impl.h index c8f081f..ac81ab4 100644 --- a/shared/libraries/opcuatms/opcuatms_client/include/opcuatms_client/objects/tms_client_property_object_impl.h +++ b/shared/libraries/opcuatms/opcuatms_client/include/opcuatms_client/objects/tms_client_property_object_impl.h @@ -82,6 +82,7 @@ class TmsClientPropertyObjectBaseImpl : public TmsClientObjectImpl, public Impl : TmsClientObjectImpl(ctx, clientContext, nodeId) , Impl(ctx, parent, localId) , propBrowseName(propBrowseName) + , defaultMethodsNames({"Connect", "Disconnect"}) { init(); } @@ -126,6 +127,7 @@ class TmsClientPropertyObjectBaseImpl : public TmsClientObjectImpl, public Impl : TmsClientObjectImpl(ctx, clientContext, nodeId) , Impl(localId, nullptr, parentDevice, ctx, parent) , propBrowseName(propBrowseName) + , defaultMethodsNames({"EnableDiscovery", "DisableDiscovery"}) { init(); } @@ -160,6 +162,7 @@ class TmsClientPropertyObjectBaseImpl : public TmsClientObjectImpl, public Impl std::map propBrowseName; opcua::OpcUaNodeId methodParentNodeId; LoggerComponentPtr loggerComponent; + const std::unordered_set defaultMethodsNames{}; ErrCode setOPCUAPropertyValueInternal(IString* propertyName, IBaseObject* value, bool protectedWrite); void addProperties(const OpcUaNodeId& parentId, diff --git a/shared/libraries/opcuatms/opcuatms_client/src/objects/tms_client_property_object_impl.cpp b/shared/libraries/opcuatms/opcuatms_client/src/objects/tms_client_property_object_impl.cpp index b886f08..00c137e 100644 --- a/shared/libraries/opcuatms/opcuatms_client/src/objects/tms_client_property_object_impl.cpp +++ b/shared/libraries/opcuatms/opcuatms_client/src/objects/tms_client_property_object_impl.cpp @@ -642,6 +642,8 @@ void TmsClientPropertyObjectBaseImpl::browseRawProperties() auto ec = Impl::addProperty(prop); if (ec != OPENDAQ_ERR_ALREADYEXISTS) return ec; + else + daqClearErrorInfo(); LOG_W("OPC UA exposes two properties with the same name \"{}\". The duplicate property will be ignored.", prop.getName()) return OPENDAQ_SUCCESS; }; @@ -674,7 +676,7 @@ void TmsClientPropertyObjectBaseImpl::setLocksForAttributes() template bool TmsClientPropertyObjectBaseImpl::isIgnoredMethodProperty(const std::string& browseName) { - return browseName == "BeginUpdate" || browseName == "EndUpdate" || browseName == "GetErrorInformation"; + return browseName == "BeginUpdate" || browseName == "EndUpdate" || browseName == "GetErrorInformation" || defaultMethodsNames.count(browseName) != 0; } template