From the OPC UA PubSub Spec Part 14, version 1.04 on page 70, Table 81 - DataSetMessage Header Structure, I see that against the DataSetFlags1, the bit range 1-2 specifies the FieldEncoding which could have one of the following values:
And then there is this Bit 5 and Bit 6 which contains the ConfigurationVersionMajorEnabled and ConfigurationVersionMinorEnabled flags. Now my question is, shouldn't the spec specify that this flag should be enabled for FieldEncoding type "RawData" as I would expect to have a DataSetMetaData with the specific Major and Minor version before I parse the DataSetMessage message.
So what happens if the FieldEncoding is of type RawData and these 2 flags (ConfigurationVersionMajorEnabled and ConfigurationVersionMinorEnabled) are set as false? How can I refer to the DataSetMetaData with a specific version so that I can use it to parse the RawData?
If the ConfigurationVersion is not enabled the the Subscribers have to assume that whatever version they have is the correct version and report any decoding errors that assumption is wrong. This configuration would only be used if the publisher knows that the configuration is not going to change.
Note that PubSub gives publishers the ability to optimize the bytes on the wire but this flexibility means users can completely mess up a system. Users that want a robust system will choose to put more bytes on the wire.