Extension mechanism is based on required blockLength and optional numGroups and numVarDataFields. The latter two tell how many groups/var-data fields we have but they tell nothing about their dimension types so I don't understand how such extension can be handled. Consider the first version of the message:
<field name="field1" id="1" type="uint32"/>
<group name="group1" id="10" dimensionType="groupSizeEncoding">
<field name="field1" id="11" type="uint32"/>
</group>
And the second version which adds another group:
<field name="field1" id="1" type="uint32"/>
<group name="group1" id="2" dimensionType="groupSizeEncoding">
<field name="field1" id="3" type="uint32"/>
</group>
<!-- new group with different dimensionType -->
<group name="group2" id="4" dimensionType="groupSizeEncoding2">
<field name="field1" id="5" type="uint32"/>
</group>
The reader of the new version will see numGroups set to 2 but that group has different dimension type and it's not possible to correctly handle it without its definition.
The same happens with var-data fields. New ones can have different type which means different length type so it's not possible to correctly handle them.
For groups I can imagine potential "fix" in form of saying that since group dimension is unknown it should be treated as default groupSizeEncoding so only groups with this dimensionType can be safely added to the message. But the standard says nothing about default type for var-data encoding. Can you please clarify how it's supposed to work?
Extension mechanism is based on required
blockLengthand optionalnumGroupsandnumVarDataFields. The latter two tell how many groups/var-data fields we have but they tell nothing about their dimension types so I don't understand how such extension can be handled. Consider the first version of the message:And the second version which adds another group:
The reader of the new version will see
numGroupsset to2but that group has different dimension type and it's not possible to correctly handle it without its definition.The same happens with var-data fields. New ones can have different
typewhich means differentlengthtype so it's not possible to correctly handle them.For groups I can imagine potential "fix" in form of saying that since group dimension is unknown it should be treated as default
groupSizeEncodingso only groups with thisdimensionTypecan be safely added to the message. But the standard says nothing about default type for var-data encoding. Can you please clarify how it's supposed to work?