Skip to content
Ricardo Martins edited this page Sep 2, 2014 · 2 revisions

Versioning Rules

This document describes IMC versioning rules and best practices for developing the IMC protocol.

Version Format

IMC versions are of the form [major version].[minor version].[revision], where each component is a number.

Each IMC message is prefixed with a synchronization number composed by two octets. The first octect is fixed and shall always have the value 254 (FE in hexadecimal). The second octet is composed by two nibbles, the first is the major version number and the second the minor version number. For example, version 5.4.1 shall have the synchronization number 65108 (FE54 in hexadecimal).

Major Version

The major version number shall be incremented in the following circunstances:

  • The set of fields of the IMC header or their types change.
  • The set of fields of the IMC footer or their types change.
  • One or more types are added or removed.
  • The current minor version number is *15 and a change mentioned in section "Minor Version" is made.

In this case the synchronization number will also change. The first nibble of the second octet of the synchronization number shall be set to the same number as the new major version number. When this event occurs, all software that depends on IMC shall be updated to use the new version.

Minor Version

The minor version number shall be incremented when:

  • One or more fields of an enumeration changes value
  • One or more fields of a bitfield changes value
  • One or more fields of a message changes type
  • One or more fields are added or removed from an existing message
  • One or more messages change identification number

In this case the synchronization number will also change. The second nibble of the second octet of the synchronization number shall be set to the same number as the new minor version number. When this event occurs, all software that depends on IMC shall be updated to use the new version.

Revision

The revision number shall be incremented when:

  • A new field is added to an existing enumeration
  • A new field is added to an existing bitfield
  • One or more messages are added or removed
  • Changes to attributes abbrev and name of messages
  • Changes to attributes unit, abbrev, and name of message fields
  • Changes to attributes prefix, name, abbrev of enumerations and bitfields
  • Changes to attributes name and abbrev of fields of enumerations and bitfields

In this case the synchronization number shall remain unchanged. Nevertheless, the developer is advised to update all software that depends on IMC.

Minor Changes

Minor changes will not increase any component of the IMC version. Falling in this category are the following changes:

  • Changes to documentation strings
  • Addition of documentation tags and attributes
  • Changes to the message attribute flags, source
  • Whitespace addition or removal