In the BSD file associated with the core UA nodeset.xml file, one can find fields
for instance in UABinaryFileDataTypeopc:StructuredType definition the Namespaces fields is defined, but is already defined in baseDatType DataTypeSchemaHeader
<!-- from Opc.Ua.Types.bsd -->
<opc:StructuredType Name="DataTypeSchemaHeader" BaseType="ua:ExtensionObject">
<opc:Field Name="NoOfNamespaces" TypeName="opc:Int32" />
<opc:Field Name="Namespaces" TypeName="opc:String" LengthField="NoOfNamespaces" />
<opc:Field Name="NoOfStructureDataTypes" TypeName="opc:Int32" />
<opc:Field Name="StructureDataTypes" TypeName="tns:StructureDescription" LengthField="NoOfStructureDataTypes" />
<opc:Field Name="NoOfEnumDataTypes" TypeName="opc:Int32" />
<opc:Field Name="EnumDataTypes" TypeName="tns:EnumDescription" LengthField="NoOfEnumDataTypes" />
<opc:Field Name="NoOfSimpleDataTypes" TypeName="opc:Int32" />
<opc:Field Name="SimpleDataTypes" TypeName="tns:SimpleTypeDescription" LengthField="NoOfSimpleDataTypes" />
</opc:StructuredType>
<opc:StructuredType Name="UABinaryFileDataType" BaseType="tns:DataTypeSchemaHeader">
<!-- Start of dupicated fields definitin that are already in the base class -->
<opc:Field Name="NoOfNamespaces" TypeName="opc:Int32" />
<opc:Field Name="Namespaces" TypeName="opc:String" LengthField="NoOfNamespaces" />
<opc:Field Name="NoOfStructureDataTypes" TypeName="opc:Int32" />
<opc:Field Name="StructureDataTypes" TypeName="tns:StructureDescription" LengthField="NoOfStructureDataTypes" />
<opc:Field Name="NoOfEnumDataTypes" TypeName="opc:Int32" />
<opc:Field Name="EnumDataTypes" TypeName="tns:EnumDescription" LengthField="NoOfEnumDataTypes" />
<opc:Field Name="NoOfSimpleDataTypes" TypeName="opc:Int32" />
<opc:Field Name="SimpleDataTypes" TypeName="tns:SimpleTypeDescription" LengthField="NoOfSimpleDataTypes" />
<!-- end of dupicated fields definitin that are already in the base class -->
<opc:Field Name="SchemaLocation" TypeName="opc:String" />
<opc:Field Name="NoOfFileHeader" TypeName="opc:Int32" />
<opc:Field Name="FileHeader" TypeName="tns:KeyValuePair" LengthField="NoOfFileHeader" />
<opc:Field Name="Body" TypeName="ua:Variant" />
</opc:StructuredType>
<opc:StructuredType Name="DataSetMetaDataType" BaseType="tns:DataTypeSchemaHeader">
<!-- Start of dupicated fields definitin that are already in the base class -->
<opc:Field Name="NoOfNamespaces" TypeName="opc:Int32" />
<opc:Field Name="Namespaces" TypeName="opc:String" LengthField="NoOfNamespaces" />
<opc:Field Name="NoOfStructureDataTypes" TypeName="opc:Int32" />
<opc:Field Name="StructureDataTypes" TypeName="tns:StructureDescription" LengthField="NoOfStructureDataTypes" />
<opc:Field Name="NoOfEnumDataTypes" TypeName="opc:Int32" />
<opc:Field Name="EnumDataTypes" TypeName="tns:EnumDescription" LengthField="NoOfEnumDataTypes" />
<opc:Field Name="NoOfSimpleDataTypes" TypeName="opc:Int32" />
<opc:Field Name="SimpleDataTypes" TypeName="tns:SimpleTypeDescription" LengthField="NoOfSimpleDataTypes" />
<!-- end of dupicated fields definitin that are already in the base class -->
<opc:Field Name="Name" TypeName="opc:String" />
<opc:Field Name="Description" TypeName="ua:LocalizedText" />
<opc:Field Name="NoOfFields" TypeName="opc:Int32" />
<opc:Field Name="Fields" TypeName="tns:FieldMetaData" LengthField="NoOfFields" />
<opc:Field Name="DataSetClassId" TypeName="opc:Guid" />
<opc:Field Name="ConfigurationVersion" TypeName="tns:ConfigurationVersionDataType" />
</opc:StructuredType>
In some other place, the fileds are not duplicated for instance :
<!-- other classes definition where fields are correctly described -->
<opc:StructuredType Name="PublishedVariableDataType" BaseType="ua:ExtensionObject">
<opc:Field Name="PublishedVariable" TypeName="ua:NodeId" />
<opc:Field Name="AttributeId" TypeName="opc:UInt32" />
<opc:Field Name="SamplingIntervalHint" TypeName="opc:Double" />
<opc:Field Name="DeadbandType" TypeName="opc:UInt32" />
<opc:Field Name="DeadbandValue" TypeName="opc:Double" />
<opc:Field Name="IndexRange" TypeName="opc:String" />
<opc:Field Name="SubstituteValue" TypeName="ua:Variant" />
<opc:Field Name="NoOfMetaDataProperties" TypeName="opc:Int32" />
<opc:Field Name="MetaDataProperties" TypeName="ua:QualifiedName" LengthField="NoOfMetaDataProperties" />
</opc:StructuredType>
<opc:StructuredType Name="PublishedDataItemsDataType" BaseType="tns:PublishedDataSetSourceDataType">
<opc:Field Name="NoOfPublishedData" TypeName="opc:Int32" />
<opc:Field Name="PublishedData" TypeName="tns:PublishedVariableDataType" LengthField="NoOfPublishedData" />
</opc:StructuredType>
this could create automatic code generators that reiies on the BSD definition to incorrectly create cncoder/decoder code.
Some other structure are already affected:
( extract of warning from node-opcua ):
Warning : find duplicated field from base structure : field name Namespaces baseSchema = DataTypeSchemaHeader schema = UABinaryFileDataType
Warning : find duplicated field from base structure : field name StructureDataTypes baseSchema = DataTypeSchemaHeader schema = UABinaryFileDataType
Warning : find duplicated field from base structure : field name EnumDataTypes baseSchema = DataTypeSchemaHeader schema = UABinaryFileDataType
Warning : find duplicated field from base structure : field name SimpleDataTypes baseSchema = DataTypeSchemaHeader schema = UABinaryFileDataType
Warning : find duplicated field from base structure : field name Namespaces baseSchema = DataTypeSchemaHeader schema = DataSetMetaDataType
Warning : find duplicated field from base structure : field name StructureDataTypes baseSchema = DataTypeSchemaHeader schema = DataSetMetaDataType
Warning : find duplicated field from base structure : field name EnumDataTypes baseSchema = DataTypeSchemaHeader schema = DataSetMetaDataType
Warning : find duplicated field from base structure : field name SimpleDataTypes baseSchema = DataTypeSchemaHeader schema = DataSetMetaDataType
Warning : find duplicated field from base structure : field name SecurityKeyServices baseSchema = PubSubGroupDataType schema = WriterGroupDataType
Warning : find duplicated field from base structure : field name GroupProperties baseSchema = PubSubGroupDataType schema = WriterGroupDataType
Warning : find duplicated field from base structure : field name SecurityKeyServices baseSchema = PubSubGroupDataType schema = ReaderGroupDataType
Warning : find duplicated field from base structure : field name GroupProperties baseSchema = PubSubGroupDataType schema = ReaderGroupDataType
Warning : find duplicated field from base structure : field name RolePermissions baseSchema = Node schema = InstanceNode
Warning : find duplicated field from base structure : field name UserRolePermissions baseSchema = Node schema = InstanceNode
Warning : find duplicated field from base structure : field name References baseSchema = Node schema = InstanceNode
Warning : find duplicated field from base structure : field name RolePermissions baseSchema = Node schema = TypeNode
Warning : find duplicated field from base structure : field name UserRolePermissions baseSchema = Node schema = TypeNode
Warning : find duplicated field from base structure : field name References baseSchema = Node schema = TypeNode
Warning : find duplicated field from base structure : field name DataValues baseSchema = HistoryData schema = HistoryModifiedData |