#
# Nested type.
# Generic software version information.
#
#
# Primary version numbers.
# If both fields are set to zero, the version is considered unknown.
#
uint8 major
uint8 minor
#
# This mask indicates which optional fields (see below) are set.
#
uint8 OPTIONAL_FIELD_FLAG_VCS_COMMIT = 1
uint8 OPTIONAL_FIELD_FLAG_IMAGE_CRC = 2
uint8 optional_field_flags
#
# VCS commit hash or revision number, e.g. git short commit hash. Optional.
#
uint32 vcs_commit
#
# The value of an arbitrary hash function applied to the firmware image.
# This field is used to detect whether the firmware running on the node is EXACTLY THE SAME
# as a certain specific revision. This field provides the absolute identity guarantee, unlike
# the version fields above, which can be the same for different builds of the firmware.
#
# The exact hash function and the methods of its application are implementation defined.
# However, implementations are recommended to adhere to the following guidelines,
# fully or partially:
#
# - The hash function should be CRC-64-WE, the same that is used for computing DSDL signatures.
#
# - The hash function should be applied to the entire application image padded to 8 bytes.
#
# - If the computed image CRC is stored within the firmware image itself, the value of
# the hash function becomes ill-defined, because it becomes recursively dependent on itself.
# In order to circumvent this issue, while computing or checking the CRC, its value stored
# within the image should be zeroed out.
#
uint64 image_crc