Description
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?