Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 01d10a11 authored by Asaf Rosenfeld's avatar Asaf Rosenfeld
Browse files

Rename and Redoc VMS HAL defs.

Test: All tests has been adjusted to post review names and pass.
Bug: 64093467
Change-Id: I7b5646b179030b59b87abc23ffe6a2a81e1b74b2
parent 1a8ec1b8
Loading
Loading
Loading
Loading
+68 −30
Original line number Diff line number Diff line
@@ -208,9 +208,9 @@ $(GEN): $(LOCAL_PATH)/types.hal
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (VmsBaseMessageIntegerValuesIndex)
# Build types.hal (VmsAvailabilityStateIntegerValuesIndex)
#
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsBaseMessageIntegerValuesIndex.java
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsAvailabilityStateIntegerValuesIndex.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -220,16 +220,16 @@ $(GEN): PRIVATE_CUSTOM_TOOL = \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.automotive.vehicle@2.1::types.VmsBaseMessageIntegerValuesIndex
        android.hardware.automotive.vehicle@2.1::types.VmsAvailabilityStateIntegerValuesIndex

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (VmsDataMessageIntegerValuesIndex)
# Build types.hal (VmsBaseMessageIntegerValuesIndex)
#
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsDataMessageIntegerValuesIndex.java
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsBaseMessageIntegerValuesIndex.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -239,7 +239,7 @@ $(GEN): PRIVATE_CUSTOM_TOOL = \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.automotive.vehicle@2.1::types.VmsDataMessageIntegerValuesIndex
        android.hardware.automotive.vehicle@2.1::types.VmsBaseMessageIntegerValuesIndex

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
@@ -265,9 +265,9 @@ $(GEN): $(LOCAL_PATH)/types.hal
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (VmsOfferingMessageIntegerValuesIndex)
# Build types.hal (VmsMessageWithLayerAndPublisherIdIntegerValuesIndex)
#
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsOfferingMessageIntegerValuesIndex.java
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsMessageWithLayerAndPublisherIdIntegerValuesIndex.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -277,16 +277,35 @@ $(GEN): PRIVATE_CUSTOM_TOOL = \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.automotive.vehicle@2.1::types.VmsOfferingMessageIntegerValuesIndex
        android.hardware.automotive.vehicle@2.1::types.VmsMessageWithLayerAndPublisherIdIntegerValuesIndex

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (VmsMessageWithLayerIntegerValuesIndex)
#
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsMessageWithLayerIntegerValuesIndex.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.automotive.vehicle@2.1::types.VmsMessageWithLayerIntegerValuesIndex

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (VmsSimpleMessageIntegerValuesIndex)
# Build types.hal (VmsOfferingMessageIntegerValuesIndex)
#
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsSimpleMessageIntegerValuesIndex.java
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsOfferingMessageIntegerValuesIndex.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -296,16 +315,16 @@ $(GEN): PRIVATE_CUSTOM_TOOL = \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.automotive.vehicle@2.1::types.VmsSimpleMessageIntegerValuesIndex
        android.hardware.automotive.vehicle@2.1::types.VmsOfferingMessageIntegerValuesIndex

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (VmsSubscriptionResponseFormat)
# Build types.hal (VmsSubscriptionsStateIntegerValuesIndex)
#
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsSubscriptionResponseFormat.java
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsSubscriptionsStateIntegerValuesIndex.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -315,7 +334,7 @@ $(GEN): PRIVATE_CUSTOM_TOOL = \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.automotive.vehicle@2.1::types.VmsSubscriptionResponseFormat
        android.hardware.automotive.vehicle@2.1::types.VmsSubscriptionsStateIntegerValuesIndex

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
@@ -548,9 +567,9 @@ $(GEN): $(LOCAL_PATH)/types.hal
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (VmsBaseMessageIntegerValuesIndex)
# Build types.hal (VmsAvailabilityStateIntegerValuesIndex)
#
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsBaseMessageIntegerValuesIndex.java
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsAvailabilityStateIntegerValuesIndex.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -560,16 +579,16 @@ $(GEN): PRIVATE_CUSTOM_TOOL = \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.automotive.vehicle@2.1::types.VmsBaseMessageIntegerValuesIndex
        android.hardware.automotive.vehicle@2.1::types.VmsAvailabilityStateIntegerValuesIndex

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (VmsDataMessageIntegerValuesIndex)
# Build types.hal (VmsBaseMessageIntegerValuesIndex)
#
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsDataMessageIntegerValuesIndex.java
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsBaseMessageIntegerValuesIndex.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -579,7 +598,7 @@ $(GEN): PRIVATE_CUSTOM_TOOL = \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.automotive.vehicle@2.1::types.VmsDataMessageIntegerValuesIndex
        android.hardware.automotive.vehicle@2.1::types.VmsBaseMessageIntegerValuesIndex

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
@@ -605,9 +624,9 @@ $(GEN): $(LOCAL_PATH)/types.hal
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (VmsOfferingMessageIntegerValuesIndex)
# Build types.hal (VmsMessageWithLayerAndPublisherIdIntegerValuesIndex)
#
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsOfferingMessageIntegerValuesIndex.java
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsMessageWithLayerAndPublisherIdIntegerValuesIndex.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -617,16 +636,35 @@ $(GEN): PRIVATE_CUSTOM_TOOL = \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.automotive.vehicle@2.1::types.VmsOfferingMessageIntegerValuesIndex
        android.hardware.automotive.vehicle@2.1::types.VmsMessageWithLayerAndPublisherIdIntegerValuesIndex

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (VmsMessageWithLayerIntegerValuesIndex)
#
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsMessageWithLayerIntegerValuesIndex.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.automotive.vehicle@2.1::types.VmsMessageWithLayerIntegerValuesIndex

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (VmsSimpleMessageIntegerValuesIndex)
# Build types.hal (VmsOfferingMessageIntegerValuesIndex)
#
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsSimpleMessageIntegerValuesIndex.java
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsOfferingMessageIntegerValuesIndex.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -636,16 +674,16 @@ $(GEN): PRIVATE_CUSTOM_TOOL = \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.automotive.vehicle@2.1::types.VmsSimpleMessageIntegerValuesIndex
        android.hardware.automotive.vehicle@2.1::types.VmsOfferingMessageIntegerValuesIndex

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (VmsSubscriptionResponseFormat)
# Build types.hal (VmsSubscriptionsStateIntegerValuesIndex)
#
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsSubscriptionResponseFormat.java
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VmsSubscriptionsStateIntegerValuesIndex.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -655,7 +693,7 @@ $(GEN): PRIVATE_CUSTOM_TOOL = \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.automotive.vehicle@2.1::types.VmsSubscriptionResponseFormat
        android.hardware.automotive.vehicle@2.1::types.VmsSubscriptionsStateIntegerValuesIndex

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
+150 −54
Original line number Diff line number Diff line
@@ -119,6 +119,8 @@ enum VehicleProperty: @2.0::VehicleProperty {
     * bytes is a serialized VMS message as defined in the vms protocol
     * which is opaque to the framework;
     *
     * IVehicle#get must always return StatusCode::NOT_AVAILABLE.
     *
     * @change_mode VehiclePropertyChangeMode:ON_CHANGE
     * @access VehiclePropertyAccess:READ_WRITE
     */
@@ -509,102 +511,196 @@ enum DiagnosticFloatSensorIndex : int32_t {
};

/**
 * This enum lists the types of supported VMS messages.
 * This enum lists the types of supported VMS messages. It is used as the first
 * integer in the vehicle property integers array and determines how the rest of
 * the message is decoded.
 */
enum VmsMessageType : int32_t {
  /** A client subscribes to a layer. */
  /**
   * A request from the subscribers to the VMS service to subscribe to a layer.
   *
   * This message type uses enum VmsMessageWithLayerIntegerValuesIndex.
   */
  SUBSCRIBE = 1,

  /** A client unsubscribes from a layer. */
  UNSUBSCRIBE = 2,
  /**
   * A request from the subscribers to the VMS service to subscribe to a layer from a specific publisher.
   *
   * This message type uses enum VmsMessageWithLayerAndPublisherIdIntegerValuesIndex.
   */
  SUBSCRIBE_TO_PUBLISHER = 2,

  /**
   * A request from the subscribers to the VMS service to unsubscribes from a layer.
   *
   * This message type uses enum VmsMessageWithLayerIntegerValuesIndex.
   */
  UNSUBSCRIBE = 3,

  /**
   * A request from the subscribers to the VMS service to unsubscribes from a layer from a specific publisher.
   *
   * This message type uses enum VmsMessageWithLayerAndPublisherIdIntegerValuesIndex.
   */
  UNSUBSCRIBE_TO_PUBLISHER = 4,

  /** A client publishes a data packet. */
  DATA = 3,
  /**
   * Information from the publishers to the VMS service about the layers which the client can publish.
   *
   * This message type uses enum VmsOfferingMessageIntegerValuesIndex.
   */
  OFFERING = 5,

  /** A client declaring layers offering. */
  OFFERING = 4,
  /**
   * A request from the subscribers to the VMS service to get the available layers.
   *
   * This message type uses enum VmsBaseMessageIntegerValuesIndex.
   */
  AVAILABILITY_REQUEST = 6,

  /** Requesting the list of available layers. */
  AVAILABILITY_REQUEST = 5,
  /**
   * A request from the publishers to the VMS service to get the layers with subscribers.
   *
   * This message type uses enum VmsBaseMessageIntegerValuesIndex.
   */
  SUBSCRIPTIONS_REQUEST = 7,

  /** Returning the list of available layers. */
  AVAILABILITY_RESPONSE = 6,
  /**
   * A response from the VMS service to the subscribers to a VmsMessageType.AVAILABILITY_REQUEST
   *
   * This message type uses enum VmsAvailabilityStateIntegerValuesIndex.
   */
  AVAILABILITY_RESPONSE = 8,

  /** Sending to the HAL the current list of the available layers. */
  AVAILABILITY_CHANGE = 7,
  /**
   * A notification from the VMS service to the subscribers on a change in the available layers.
   *
   * This message type uses enum VmsAvailabilityStateIntegerValuesIndex.
   */
  AVAILABILITY_CHANGE = 9,

  /** Requesting layers that have subscribers. */
  SUBSCRIPTIONS_REQUEST = 8,
  /**
   * A response from the VMS service to the publishers to a VmsMessageType.SUBSCRIPTIONS_REQUEST
   *
   * This message type uses enum VmsSubscriptionsStateIntegerValuesIndex.
   */
  SUBSCRIPTIONS_RESPONSE = 10,

  /** Returning layers that have subscribers. */
  SUBSCRIPTIONS_RESPONSE = 9,
  /**
   * A notification from the VMS service to the publishers on a change in the layers with subscribers.
   *
   * This message type uses enum VmsSubscriptionsStateIntegerValuesIndex.
   */
  SUBSCRIPTIONS_CHANGE = 11,

  /** Sending to the HAL the current list of the subscribed layers. */
  SUBSCRIPTIONS_CHANGE = 10,
  /**
   * A message from the VMS service to the subscribers or from the publishers to the VMS service
   * with a serialized VMS data packet as defined in the VMS protocol.
   *
   * This message type uses enum VmsBaseMessageIntegerValuesIndex.
   */
  DATA = 12,
};

/**
 * This enum provides the canonical mapping for VMS properties that have an
 * integer value.
 * Every VMS message starts with the type of the message from the VmsMessageType enum.
 * Messages with no parameters such as VmsMessageType.AVAILABILITY_REQUEST,
 * VmsMessageType.SUBSCRIPTIONS_REQUEST and VmsMessageType.DATA are also based on this enum.
 */
enum VmsBaseMessageIntegerValuesIndex : int32_t {
  /* The message type as enumerated by VmsMessageType enum. */
  VMS_MESSAGE_TYPE = 0,
  MESSAGE_TYPE = 0,
};

/*
 * This enum provides the canonical mapping for VMS SUBMIT and UNSUBMIT
 * messages integer value properties.
 * A VMS message with a layer is sent as part of a VmsMessageType.SUBSCRIBE or
 * VmsMessageType.UNSUBSCRIBE messages.
 *
 * The layer type is defined in the VMS protocol, and the subtype and version are
 * controlled by the implementer of the publisher.
 */
enum VmsSimpleMessageIntegerValuesIndex : VmsBaseMessageIntegerValuesIndex {
  /* The layer ID as defined in the vms protocol. */
  VMS_LAYER_ID = 1,
enum VmsMessageWithLayerIntegerValuesIndex : VmsBaseMessageIntegerValuesIndex {
  LAYER_TYPE = 1,

  /* The version of the VMS layer. */
  VMS_LAYER_VERSION = 2,
  LAYER_SUBTYPE = 2,

  /* The layer type as defined in the vms protocol */
  VMS_LAYER_SUB_TYPE = 3,
  LAYER_VERSION = 3,
};

/*
 * This enum provides the canonical mapping for VMS DATA
 * message integer value properties.
 * A VMS message with a layer and publisher ID is sent as part of a
 * VmsMessageType.SUBSCRIBE_TO_PUBLISHER and VmsMessageType.UNSUBSCRIBE_TO_PUBLISHER messages.
 */
enum VmsDataMessageIntegerValuesIndex : VmsSimpleMessageIntegerValuesIndex {
  /* A publisher ID of the client that published this message. */
  VMS_PUBLISHER_ID = 4,
enum VmsMessageWithLayerAndPublisherIdIntegerValuesIndex : VmsMessageWithLayerIntegerValuesIndex {
  PUBLISHER_ID = 4,
};

/*
 * This enum provides the canonical mapping for VMS offering messages integer
 * value properties
 * An offering can be sent by publishers as part of VmsMessageType.OFFERING in order to
 * advertise which layers they can publish and under which constraints: e.g., I can publish Layer X
 * if someone else will publish Layer Y.
 * The offering contains the publisher ID which was assigned to the publisher by the VMS service.
 * A single offering is represented as:
 * - Layer type
 * - Layer subtype
 * - Layer version
 * - Number of dependencies (N)
 * - N x (Layer type, Layer subtype, Layer version)
 */
enum VmsOfferingMessageIntegerValuesIndex : VmsBaseMessageIntegerValuesIndex {
  /* The ID assigend to the publisher by the VMS core. */
  PUBLISHER_ID = 1,

  /* The number of VMS layer dependencies. */
  VMS_NUMBER_OF_LAYERS_DEPENDENCIES = 2,
  NUMBER_OF_OFFERS = 2,

  /* The first index that contain dependencies */
  FIRST_DEPENDENCIES_INDEX = 3,
  OFFERING_START = 3,
};

/**
 * A VMS subscription request only contains its message type. The format of a VMS subscription
 * response is described below.
 * A subscriptions state is sent to the publishers in response to a change in the subscriptions
 * as part of a VmsMessageType.SUBSCRIPTIONS_CHANGE, or in response to a
 * VmsMessageType.SUBSCRIPTIONS_REQUEST message as part of VmsMessageType.SUBSCRIPTIONS_RESPONSE.
 * The VMS service issues monotonically increasing sequence numbers, and in case a subscriber receives
 * a smaller sequnce number it should ignore the message.
 * The subscriptions are sent as a list of layers followed by a list of associated layers:
 * {Sequence number, N, M, N x layer, M x associated layer}
 * A subscribed layer is represented as three integers:
 * - Layer type
 * - Layer subtype
 * - Layer version
 * A subscribed associated layer is a layer with a list of publisher IDs. It is represented as:
 * - Layer type
 * - Layer subtype
 * - Layer version
 * - Number of publisher IDs (N)
 * - N x publisher ID
 */
enum VmsSubscriptionResponseFormat : VmsBaseMessageIntegerValuesIndex {
enum VmsSubscriptionsStateIntegerValuesIndex : VmsBaseMessageIntegerValuesIndex {
  SEQUENCE_NUMBER = 1,

  NUMBER_OF_LAYERS = 2,

  NUMBER_OF_ASSOCIATED_LAYERS = 3,

  SUBSCRIPTIONS_START = 4,
};

/**
    * Recipients should ignore any packet with a sequence number that is less than the highest
    * sequence number they have seen thus far.
 * An availability state is sent to the subscribers in response to a change in the available
 * layers as part of a VmsMessageType.AVAILABILITY_CHANGE message, or in response to a
 * VmsMessageType.AVAILABILITY_REQUEST message as part of a VmsMessageType.AVAILABILITY_RESPONSE.
 * The VMS service issues monotonically increasing sequence numbers, and in case a subscriber receives
 * a smaller sequnce number, it should ignore the message.
 * An available associated layer is a layer with a list of publisher IDs:
 * - Layer type
 * - Layer subtype
 * - Layer version
 * - Number of publisher IDs (N)
 * - N x publisher ID
*/
enum VmsAvailabilityStateIntegerValuesIndex : VmsBaseMessageIntegerValuesIndex {
  SEQUENCE_NUMBER = 1,

  /** The number of VMS layers. Each layer has two integers: type and version. */
  NUMBER_OF_LAYERS = 2,
  NUMBER_OF_ASSOCIATED_LAYERS = 2,

  /** The first index that contains a layer. */
  FIRST_LAYER = 3,
  LAYERS_START = 3,
};