Is there a specific logic or set of rules for choosing the @extent value in DSDL?
Consider the case of 7509.Heartbeat.1.0.dsdl. The following instructions are provided at the end of this file:
@assert _offset_ % 8 == {0}
@assert _offset_ == {56} # Fits into a single-frame Classic CAN transfer (least capable transport, smallest MTU).
@extent 12 * 8
The first assertion for alignment (@assert _offset_ % 8 == {0}) is straightforward, and the second assertion (@assert _offset_ == {56}) is also reasonable, especially with the accompanying comment about fitting into a single-frame Classic CAN transfer.
However, I’m confused about the last @extent directive, particularly @extent 12 * 8. This directive sets the extent to 96 bits, but I’m struggling to understand the rationale behind this, especially since the previous assertion checks for a 56 bits match. Furthermore, if we are considering possible extensions to this data type, why choose a 12 byte size instead of for example byte sizes like 16, 32, or 64? Any clarification on this would be greatly appreciated.