Introduction

This section is non-normative.

The Vehicle Information API provides operations to get access to the vehicle data (henceforth "properties") available from vehicle systems and also to change (write) a number of properties.

Vehicle data types are available in the VehicleCommonDataTypeInterface. Each data type is accessed through a VehicleInterface attribute available on the navigator.vehicle object. The attribute name corresponds with the Vehicle Type. For example, the attribute "vehicle.vehicleSpeed" is the interface to the data type "VehicleSpeed".

Conformance

As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.

The key words MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL in this specification are to be interpreted as described in [RFC2119].

This specification defines conformance criteria that apply to a single product: the user agent that implements the interfaces that it contains.

Implementations that use ECMAScript to implement the APIs defined in this specification MUST implement them in a manner consistent with the ECMAScript Bindings defined in the Web IDL specification [WEBIDL], as this specification uses that specification and terminology.

Terminology

The Promise provide a convenient way to get access to the result of an operation.

Security and privacy considerations

It is expected that security of vehicle APIs described in this document is based on permissions dictated by:

  • The JavaScript runtime under which the APIs are used – in some cases
  • The underlying operating system – always

  • No separate permission or access control model will be defined for vehicle APIs. Depending on a specific platform, the JavaScript runtime SDK used may have to provide tools to generate permissions for application descriptors as required by the OS. Android is an example under which such a descriptor (Android app manifest) has to be generated if the runtime maps its apps to OS-level apps.

    Table of Contents

    2. Vehicle Interface

    The Vehicle interface represents the initial entry point for getting access to the vehicle information services, i.e. Engine Speed and Tire Pressure.

    [NoInterfaceObject]
    interface Vehicle {
    };

    3. Zone Interface

    The Zone interface contains the constants that represent physical zones and logical zones

    enum ZonePosition {
        "front",
        "middle",
        "right",
        "left",
        "rear",
        "center"
    };
    Enumeration description
    front middle
    middle the middle position of a row.
    right left
    left rear
    rear center
    center the center row
    
    interface Zone {
                    attribute DOMString[] value;
        readonly    attribute Zone        driver;
        boolean equals (Zone zone);
        boolean contains (Zone zone);
    };

    3.1 Attributes

    driver of type Zone , readonly
    MUST return physical zone for logical driver
    value of type array of DOMString,
    MUST return array of physical zones

    3.2 Methods

    contains
    MUST return true if zone.value can be found within this.value
    ParameterTypeNullableOptionalDescription
    zone Zone
    Return type: boolean
    equals
    MUST return true if zone.value matches the contents of this.value. Ordering of elements within Zone.value does not matter.
    ParameterTypeNullableOptionalDescription
    zone Zone
    Return type: boolean

    4. VehicleInterfaceCallback Callback

    The VehicleInterfaceCallback

    callback VehicleInterfaceCallback = void(object value); ();

    5. AvailableCallback Callback

    The AvailableCallback

    callback AvailableCallback = void (Availability available) ();

    6. VehicleInterfaceError Interface

    VehicleInterfaceError is used to identify the type of error encountered during an opertion

    enum VehicleError {
        "permission_denied",
        "invalid_operation",
        "timeout",
        "invalid_zone",
        "unknown"
    };
    Enumeration description
    permission_denied Indicates that the user does not have permission to perform the operation. More details can be obtained through the Data Availability API.
    invalid_operation Indicates that the operation is not valid. This can be because it isn't supported or has invalid arguments
    timeout Operation timed out. Timeout length depends upon the implementation
    invalid_zone Indicates the zone argument is not valid
    unknown Indicates an error that is not known
    [NoInterfaceObject]
    interface VehicleInterfaceError {
        readonly    attribute VehicleError error;
        readonly    attribute DOMString    message;
    };

    6.1 Attributes

    error of type VehicleError , readonly
    MUST return VehicleError
    message of type DOMString, readonly
    MUST return user-readable error message

    7. VehicleInterface Interface

    The VehicleInterface interface represents the base interface to get all vehicle properties.

    
    interface VehicleInterface {
        Promise get (optional Zone zone);
        readonly    attribute Zone[] zones;
    };

    7.1 Attributes

    zones of type array of Zone , readonly
    MUST return all zones supported for this type.

    7.2 Methods

    get
    MUST return the Promise. The "resolve" callback in the promise is used to pass the vehicle data type that corresponds to the specific VehicleInterface instance. For example, "vehicle.vehicleSpeed" corresponds to the "VehicleSpeed" data type. VehicleInterfaceError is passed to the 'reject' callback in the promise.
    ParameterTypeNullableOptionalDescription
    zone Zone
    Return type: Promise
    Example 1
    vehicle.vehicleSpeed.get().then(resolve);
    
    function resolve(data)
    {
      //data is of type VehicleSpeed
      console.log("Speed: " + data.speed);
      console.log("Time Stamp: " + data.timestamp);
    }

    8. VehicleConfigurationInterface Interface

    The VehicleConfigurationInterface interface is to be used to provide access to static vehicle information that never changes: external dimensions, identification, transmission type etc...

    [NoInterfaceObject]
    interface VehicleConfigurationInterface : VehicleInterface {
    };

    9. VehicleSignalInterface Interface

    The VehicleSignalInterface interface represents vehicle signals that, as a rule, and unlike vehicle configurations, can change values, either programmatically (necessitating support for set method) or due to external events and occurrences, as reflected by subscription management.

    [NoInterfaceObject]
    interface VehicleSignalInterface : VehicleInterface {
        Promise        set (object value, optional Zone zone);
        unsigned short subscribe (VehicleInterfaceCallback callback, optional Zone zone);
        void           unsubscribe (unsigned short handle);
    };

    9.1 Methods

    set
    MUST return Promise. The "resolve" callback indicates the set was successful. No data is passed to resolve. If there was an error, "reject" will be called with a VehicleInterfaceError object
    ParameterTypeNullableOptionalDescription
    value object
    zone Zone
    Return type: Promise
    subscribe
    MUST return handle to subscription or 0 if error
    ParameterTypeNullableOptionalDescription
    callback VehicleInterfaceCallback
    zone Zone
    Return type: unsigned short
    unsubscribe
    MUST return void. unsubscribes to value changes on this interface.
    ParameterTypeNullableOptionalDescription
    handle unsigned short
    Return type: void
    Example 2
    var zone = Zone
    vehicle.door.set({"lock" : true}, zone.driver).then(resolve, reject);
    
    function resolve()
    {
      /// success
    }
    
    function reject(errorData)
    {
      console.log("Error occurred during set: " + errorData.message + " code: " + errorData.error);
    }

    10. Data Availability

    The availability API allows for developers to determine what attributes are available or not and if not, why. It also allows for notifications when the availability changes.

    enum Availability {
        "available",
        "not_supported",
        "not_supported_yet",
        "not_supported_security_policy",
        "not_supported_business_policy",
        "not_supported_other"
    };
    Enumeration description
    available data is available
    not_supported not supported by this vehicle
    not_supported_yet not supported at this time, but may become supported later.
    not_supported_security_policy not supported because of security policy
    not_supported_business_policy not supported because of business policy
    not_supported_other not supported for other reasons
    partial interface VehicleInterface {
        Availability availableForRetrieval (DOMString attributeName);
        readonly    attribute boolean supported;
        short        availabilityChangedListener (AvailableCallback callback);
        void         removeAvailabilityChangedListener (short handle);
    };

    10.1 Attributes

    supported of type boolean, readonly
    MUST return true if this attribute is supported and available

    10.2 Methods

    availabilityChangedListener
    MUST return handle for listener.
    ParameterTypeNullableOptionalDescription
    callback AvailableCallback
    Return type: short
    availableForRetrieval
    MUST return whether a not this attribute is available for get() or not
    ParameterTypeNullableOptionalDescription
    attributeName DOMString
    Return type: Availability
    removeAvailabilityChangedListener
    ParameterTypeNullableOptionalDescription
    handle short
    Return type: void
    Example 3
    if( ( var a = vehicle.vehicleSpeed.availableForRetrieval("speed") ) === "available" )
    {
      // we can use it.
    }
    else
    {
      // tell us why:
      console.log(a);
    }
    partial interface VehicleSignalInterface {
        Availability availableForSubscription (DOMString attributeName);
        Availability availableForSetting (DOMString attributeName);
    };

    10.3 Methods

    availableForSetting
    MUST return whether a not this attribute is available for set() or not
    ParameterTypeNullableOptionalDescription
    attributeName DOMString
    Return type: Availability
    availableForSubscription
    MUST return whether a not this attribute is available for subscribe() or not
    ParameterTypeNullableOptionalDescription
    attributeName DOMString
    Return type: Availability
    Example 4
    var canHasVehicleSpeed = vehicle.vehicleSpeed.availableForSubscription("speed") === "available";
    
    vehicle.vehicleSpeed.availabilityChangedListener( function (available) {
      canHasVehicleSpeed = available === "available";
      checkVehicleSpeed();
    });
    
    function checkVehicleSpeed()
    {
      if(canHasVehicleSpeed)
      {
        vehicle.vehicleSpeed.get().then(callback);
      }
    }

    11. History

    The History API provides a way for applications to access logged data from the vehicle. What data is available and how much is up to the implementation. This section is OPTIONAL.

    readonly attribute any value
    MUST return value. This is ANY Vehicle Data Type.
    readonly attribute DOMTimeStamp timeStamp
    MUST return time in which 'value' was read by the system.
    partial interface VehicleInterface {
        Promise getHistory (Date begin, Date end, optional Zone zone);
        readonly    attribute boolean isLogged;
        readonly    attribute Date ?  from;
        readonly    attribute Date ?  to;
    };

    11.1 Attributes

    from of type Date , readonly , nullable
    MUST return Date in which logging started from. Returns null if isLogged is false.
    isLogged of type boolean, readonly
    MUST return true if this attribute is logged
    to of type Date , readonly , nullable
    MUST return Date in which logging of this attribute ends. Returns null if isLogged is false.

    11.2 Methods

    getHistory
    MUST return Promise. The "resolve" callback in the promise is used to pass an array of HistoryItems.
    ParameterTypeNullableOptionalDescription
    begin Date
    end Date
    zone Zone
    Return type: Promise
    Example 5
    /// check if there is data being logged for vehicleSpeed:
    if(vehicle.vehicleSpeed.isLogged)
    {
      /// get all vehicleSpeed since it was first logged:
      vehicle.vehicleSpeed.getHistory(vehicle.vehicleSpeed.from, vehicle.vehicleSpeed.to).then( function ( data ) {
        console.log(data.length);
      });
    }

    12.Extending the Vehicle Data API

    This specification anticipates that implementors may desire to extend this API and define new data types that this specification does not define. This section provides some general guidlines on how extending the API should be done.

    All new data types must have two parts: a VehicleInterface attributed on the navigator.vehicle object and an interface definition that defines the data type. The following example describes how one would extend the specification to add a "whizzer" data feature.

    Example 6
    partial interface Vehicle {
    /span>readonly attribute VehicleSignalInterface whizzer; /// returns an interface to the Whizzer type
    an>}
    
    an>interface Whizzer {
    readonly attribute boolean isWhizzing; 
    an>}

    12.1 Extending the Vehicle Data API

    There may also be attributes of a data type interface that an implementor may wish to extend. The general guideline here is to add attributes to interfaces that are logically related. For example, lets say an implementor wishes to add support for a new type of light. The implementor would extend the already existing Light interface and add the attribute there.

    Example 7
    partial interface Light {
    /span>attribute boolean superBeam; 
    an>}

    12.2 Mapping vs. Extending

    Because vehicle data may be different in a system than what is defined in the specication, it is preferable to perform post-processing to translate and map the system data to the defined type. It is NOT preferable to create a new type if one has already been defined by this specification.

    13. VehicleCommonDataType Interface

    The VehicleCommonDataType interface represents the common data type for all vehicle data types

    [NoInterfaceObject]
    interface VehicleCommonDataType {
        readonly    attribute DOMTimeStamp? timeStamp;
    };

    13.1 Attributes

    timeStamp of type DOMTimeStamp, readonly , nullable
    MUST return timestamp when any data in this interface was received on the system.

    13. Configuration and Identification Interfaces

    Interfaces relating to vehicle configuration and identification including: make, type size, transmission configuration, identification numbers, etc...

    partial interface Vehicle {
        readonly    attribute VehicleConfigurationInterface identification;
        readonly    attribute VehicleConfigurationInterface sizeConfiguration;
        readonly    attribute VehicleConfigurationInterface fuelConfiguration;
        readonly    attribute VehicleConfigurationInterface transmissionConfiguration;
        readonly    attribute VehicleConfigurationInterface wheelConfiguration;
        readonly    attribute VehicleSignalInterface steeringWheelConfiguration;
    };

    14.1 Attributes

    fuelConfiguration of type VehicleConfigurationInterface, readonly
    MUST return VehicleConfigurationInterface for accessing FuelConfiguration
    identification of type VehicleConfigurationInterface, readonly
    MUST return VehicleConfigurationInterface for accessing Identification
    sizeConfiguration of type VehicleConfigurationInterface, readonly
    MUST return VehicleConfigurationInterface for accessing SizeConfiguration
    steeringWheelConfiguration of type VehicleSignalInterface, readonly
    MUST return VehicleConfigurationInterface for accessing SteeringWheelConfiguration
    transmissionConfiguration of type VehicleConfigurationInterface, readonly
    MUST return VehicleConfigurationInterface for accessing TransmissionConfiguration
    wheelConfiguration of type VehicleConfigurationInterface, readonly
    MUST return VehicleConfigurationInterface for accessing WheelConfiguration

    14.2 Identification Interface

    The Identification interface provides identification information about a vehicle.

    enum VehicleTypeEnum {
        "passengerCarMini",
        "passengerCarLight",
        "passengerCarCompact",
        "passengerCarMedium",
        "passengerCarHeavy",
        "sportUtilityVehicle",
        "pickupTruck",
        "van"
    };
    Enumeration description
    passengerCarMini Passenger car 680–907 kg
    passengerCarLight Passenger car 907–1,134 kg
    passengerCarCompact Passenger car 1,134–1,360 kg
    passengerCarMedium Passenger car 1,361–1,587 kg
    passengerCarHeavy Passenger car 1,588 kg and over
    sportUtilityVehicle Sport utility vehicle
    pickupTruck Pickup truck
    van Van
    [NoInterfaceObject]
    interface Identification : VehicleCommonDataType {
        readonly    attribute DOMString?       VIN;
        readonly    attribute DOMString?       WMI;
        readonly    attribute VehicleTypeEnum? vehicleType;
        readonly    attribute DOMString?       brand;
        readonly    attribute DOMString?       model;
        readonly    attribute unsigned short?  year;
    };

    14.2.1 Attributes

    VIN of type DOMString, readonly , nullable
    MUST return the Vehicle Identification Number (ISO 3833)
    WMI of type DOMString, readonly , nullable
    MUST return the World Manufacture Identifier defined by SAE ISO 3780:2009. 3 characters.
    brand of type DOMString, readonly , nullable
    MUST return vehicle brand name
    model of type DOMString, readonly , nullable
    MUST return vehicle model
    vehicleType of type VehicleTypeEnum , readonly , nullable
    MUST return vehicle type
    year of type unsigned short, readonly , nullable
    MUST return vehicle model year

    14.3 SizeConfiguration Interface

    The SizeConfiguration interface provides size and shape information about a vehicle as a whole.

    [NoInterfaceObject]
    interface SizeConfiguration : VehicleCommonDataType {
        readonly    attribute unsigned short?   width;
        readonly    attribute unsigned short?   height;
        readonly    attribute unsigned short?   length;
        readonly    attribute unsigned short[]? doorsCount;
        readonly    attribute unsigned short?   totalDoors;
    };

    14.3.1 Attributes

    doorsCount of type array of unsigned short, readonly , nullable
    MUST return list of car doors, organized in "rows" with number doors in each row.(Per Row - Min: 0, Max: 3)
    height of type unsigned short, readonly , nullable
    MUST return distance from the ground to the highest point of the vehicle (not including antennas) (Unit: millimeters Note: Number may be an approximation, and should not be expected to be exact.)
    length of type unsigned short, readonly , nullable
    MUST return distance from front bumper to rear bumper (Unit: millimeters Note: Number may be an approximation, and should not be expected to be exact.)
    totalDoors of type unsigned short, readonly , nullable
    MUST return total number of doors on the vehicle (all doors opening to the interior, including hatchbacks) (Min: 0, Max: 10)
    width of type unsigned short, readonly , nullable
    MUST return widest dimension of the vehicle (not including the side mirrors) (Unit: millimeters Note: Number may be an approximation, and should not be expected to be exact.)

    14.4 FuelConfiguration Interface

    The FuelConfiguration interface provides information about the fuel configuration of a vehicle.

    enum FuelTypeEnum {
        "gasoline",
        "methanol",
        "ethanol",
        "diesel",
        "lpg",
        "cng",
        "electric"
    };
    Enumeration description
    gasoline Gasoline
    methanol Methanol
    ethanol Ethanol
    diesel Diesel
    lpg Liquified petroleom gas
    cng Compressed natural gas
    electric Electric
    [NoInterfaceObject]
    interface FuelConfiguration : VehicleCommonDataType {
        readonly    attribute FuelTypeEnum[]? fuelType;
        readonly    attribute Zone?           refuelPosition;
    };

    14.4.1 Attributes

    fuelType of type array of FuelTypeEnum , readonly , nullable
    MUST return type of fuel used by vehicle. If the vehicle uses multiple fuels, fuelType returns an array of fuel types.
    refuelPosition of type Zone, readonly , nullable
    MUST return location on the vehicle with access to the fuel door

    14.5 TransmissionConfiguration Interface

    The TransmissionConfiguration interface provides transmission configuration information information about a vehicle.

    enum TransmissionGearTypeEnum {
        "auto",
        "manual"
    };
    Enumeration description
    auto Automatic transmission
    manual Manual transmission
    [NoInterfaceObject]
    interface TransmissionConfiguration : VehicleCommonDataType {
        readonly    attribute TransmissionGearTypeEnum? transmissionGearType;
    };

    14.5.1 Attributes

    transmissionGearType of type TransmissionGearTypeEnum , readonly , nullable
    MUST return transmission gear type

    14.6 WheelConfiguration Interface

    The WheelConfiguration interface provides wheel configuration information about a vehicle.

    [NoInterfaceObject]
    interface WheelConfiguration : VehicleCommonDataType {
        readonly    attribute unsigned short? wheelRadius;
        readonly    attribute Zone?           zone;
    };

    14.6.1 Attributes

    wheelRadius of type unsigned short, readonly , nullable
    MUST return radius of the front wheel (Unit: millimeters)
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    14.7 SteeringWheelConfiguration Interface

    The SteeringWheelConfiguration interface provides steering wheel configuration information information about a vehicle.

    [NoInterfaceObject
    interface SteeringWheelConfiguration : VehicleCommonDataType {
        readonly    attribute boolean?        steeringWheelLeft;
                    attribute unsigned short? steeringWheelTelescopingPosition;
                    attribute unsigned short? steeringWheelPositionTilt;
    };

    14.7.1 Attributes

    steeringWheelLeft of type boolean, readonly , nullable
    MUST return true if steering wheel is on left side of vehicle
    steeringWheelPositionTilt of type unsigned short, , nullable
    MUST return steering wheel position as percentage of tilt (Unit: percentage, 0%:tilted lowest downward-facing position, 100%:highest upward-facing position)
    steeringWheelTelescopingPosition of type unsigned short, , nullable
    MUST return steering wheel position as percentage of extension from the dash (Unit: percentage, 0%:closest to dash, 100%:farthest from dash)

    15. Running Status Interfaces

    Interfaces relating to the running/operation of a vehicle including: speed, temperatures, acceleration, etc...

    partial interface Vehicle {
        readonly    attribute VehicleSignalInterface vehicleSpeed;
        readonly    attribute VehicleSignalInterface wheelSpeed;
        readonly    attribute VehicleSignalInterface engineSpeed;
        readonly    attribute VehicleSignalInterface powerTrainTorque;
        readonly    attribute VehicleSignalInterface acceleratorPedalPosition;
        readonly    attribute VehicleSignalInterface throttlePosition;
        readonly    attribute VehicleSignalInterface tripMeters;
        readonly    attribute VehicleSignalInterface transmission;
        readonly    attribute VehicleSignalInterface cruiseControlStatus;
        readonly    attribute VehicleSignalInterface lightStatus;
        readonly    attribute VehicleSignalInterface interiorLightStatus;
        readonly    attribute VehicleSignalInterface horn;
        readonly    attribute VehicleSignalInterface chime;
        readonly    attribute VehicleSignalInterface fuel;
        readonly    attribute VehicleSignalInterface engineOil;
        readonly    attribute VehicleSignalInterface acceleration;
        readonly    attribute VehicleSignalInterface engineCoolant;
        readonly    attribute VehicleSignalInterface steeringWheel;
        readonly    attribute VehicleSignalInterface ignitionTime;
        readonly    attribute VehicleSignalInterface yawRate;
        readonly    attribute VehicleSignalInterface brakeOperation;
        readonly    attribute VehicleSignalInterface wheelTick;
        readonly    attribute VehicleSignalInterface buttonEvent;
        readonly    attribute VehicleSignalInterface drivingMode;
        readonly    attribute VehicleSignalInterface nightMode;
    };

    15.1 Attributes

    acceleration of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing Acceleration
    acceleratorPedalPosition of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing AcceleratorPedalPosition
    brakeOperation of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing BrakeOperation
    buttonEvent of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing ButtonEvent
    chime of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing Chime
    cruiseControlStatus of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing CruiseControlStatus
    drivingMode of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing DrivingMode
    engineCoolant of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing EngineCoolant
    engineOil of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing EngineOil
    engineSpeed of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing EngineSpeed
    fuel of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing Fuel or undefined if not supported
    horn of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing Horn
    ignitionTime of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing IgnitionTime
    interiorLightStatus of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing InteriorLightStatus
    lightStatus of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing LightStatus
    nightMode of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing NightMode
    powerTrainTorque of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing PowertrainTorque
    steeringWheel of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing SteeringWheel
    throttlePosition of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing ThrottlePosition
    transmission of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing Transmission
    tripMeters of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing TripMeters
    vehicleSpeed of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing VehicleSpeed
    wheelSpeed of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing WheelSpeed
    wheelTick of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing WheelTick
    yawRate of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing YawRate

    15.2 VehicleSpeed Interface

    The VehicleSpeed interface represents vehicle speed information

    [NoInterfaceObject]
    interface VehicleSpeed : VehicleCommonDataType {
        readonly    attribute unsigned short speed;
    };

    15.2.1 Attributes

    speed of type unsigned short, readonly
    MUST return vehicle speed (Unit: meters per hour)

    15.3 WheelSpeed Interface

    The WheelSpeed interface represents wheel speed information.

    [NoInterfaceObject]
    interface WheelSpeed : VehicleCommonDataType {
        readonly    attribute unsigned short speed;
        readonly    attribute Zone?          zone;
    };

    15.3.1 Attributes

    speed of type unsigned short, readonly
    MUST return wheel speed (Unit: meters per hour)
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    15.4 EngineSpeed Interface

    The EngineSpeed interface represents engine speed information.

    [NoInterfaceObject]
    interface EngineSpeed : VehicleCommonDataType {
        readonly    attribute unsigned long speed;
    };

    15.4.1 Attributes

    speed of type unsigned long, readonly
    MUST return engine speed (Unit: rotations per minute)

    15.5 VehiclePowerModeType Interface

    The VehiclePowerModeType interface represents position of the ignition switch.

    enum VehiclePowerMode {
        "off",
        "accessory1",
        "accessory2",
        "running"
    };
    Enumeration description
    off Off - No power
    accessory1 Accessory power 1
    accessory2 Accessory power 2
    running Running power
    [NoInterfaceObject]
    interface VehiclePowerModeType : VehicleCommonDataType {
        readonly    attribute VehiclePowerMode value;
    };

    15.5.1 Attributes

    value of type VehiclePowerMode , readonly
    MUST return position of the ignition switch

    15.6 PowertrainTorque Interface

    The PowertrainTorque interface represents powertrain torque.

    [NoInterfaceObject]
    interface PowerTrainTorque : VehicleCommonDataType {
        readonly    attribute short value;
    };

    15.6.1 Attributes

    value of type short, readonly
    MUST return powertrain torque (Unit: newton meters)

    15.7 AcceleratorPedalPosition Interface

    The AcceleratorPedalPosition interface represents the accelerator pedal position.

    [NoInterfaceObject]
    interface AcceleratorPedalPosition : VehicleCommonDataType {
        readonly    attribute unsigned short value;
    };

    15.7.1 Attributes

    value of type unsigned short, readonly
    MUST return accelerator pedal position as a percentage (Unit: percentage, 0%: released pedal, 100%: fully depressed)

    15.8 ThrottlePosition Interface

    The ThrottlePosition represents position of the throttle.

    [NoInterfaceObject]
    interface ThrottlePosition : VehicleCommonDataType {
        readonly    attribute unsigned short value;
    };

    15.8.1 Attributes

    value of type unsigned short, readonly
    MUST return throttle position as a percentage (Unit: percentage, 0%: closed, 100%: fully open)

    15.9 Trip Interface

    The Trip interface represents trip meter.

    [NoInterfaceObject]
    interface Trip {
        readonly    attribute unsigned long   distance;
        readonly    attribute unsigned short? averageSpeed;
        readonly    attribute unsigned short? fuelConsumption;
    };

    15.9.1 Attributes

    averageSpeed of type unsigned short, readonly , nullable
    MUST return average speed based on trip meter (Unit: kilometers per hour)
    distance of type unsigned long, readonly
    MUST return distance travelled based on trip meter (Unit: meters)
    fuelConsumption of type unsigned short, readonly , nullable
    MUST return fuel consumed based on trip meter (Unit: milliliters per 100 kilometers)
    [NoInterfaceObject]
    interface TripMeters : VehicleCommonDataType {
        readonly    attribute Trip[] meters;;
    };

    15.9.2 Attributes

    meters; of type array of Trip , readonly
    MUST return trip meters

    15.10 Transmission Interface

    The Transmission interface represents the current transmission gear and mode.

    enum TransmissionMode {
        "park",
        "reverse",
        "neutral",
        "low",
        "drive",
        "overdrive"
    };
    Enumeration description
    park Transmission is in park
    reverse Transmission is in reverse
    neutral Transmission is in neutral
    low Transmission is in low
    drive Transmission is in drive
    overdrive Transmission is in overdrive
    [NoInterfaceObject]
    interface Transmission : VehicleCommonDataType {
        readonly    attribute octet?            gear;
        readonly    attribute TransmissionMode? mode;
    };

    15.10.1 Attributes

    gear of type octet, readonly , nullable
    MUST return transmission gear position. Range 0 - 10
    mode of type TransmissionMode , readonly , nullable
    MUST return transmission Mode (see TransmissionMode )

    15.11 CruiseControlStatus Interface

    The CruiseControlStatus interface represents cruise control settings.

    [NoInterfaceObject]
    interface CruiseControlStatus : VehicleCommonDataType {
        readonly    attribute boolean        status;
        readonly    attribute unsigned short speed;
    };

    15.11.1 Attributes

    speed of type unsigned short, readonly
    MUST return target Cruise Control speed in kilometers per hour (Unit: kilometers per hour)
    status of type boolean, readonly
    MUST return whether or not the Cruise Control system is on (true) or off (false)

    15.12 LightStatus Interface

    The LightStatus interface represents exterior light statuses.

    [NoInterfaceObject]
    interface LightStatus : VehicleCommonDataType {
                    attribute boolean  head;
                    attribute boolean  rightTurn;
                    attribute boolean  leftTurn;
                    attribute boolean  brake;
                    attribute boolean? fog;
                    attribute boolean  hazard;
                    attribute boolean  parking;
                    attribute boolean  highBeam;
                    attribute boolean? automaticHeadlights;
                    attribute boolean? dynamicHighBeam;
        readonly    attribute Zone?    zone;
    };

    15.12.1 Attributes

    automaticHeadlights of type boolean, , nullable
    MUST return whether automatic head lights status: activated (true) or not (false)
    brake of type boolean,
    MUST return Brake light status: on (true), off (false)
    dynamicHighBeam of type boolean, , nullable
    MUST return whether dynamic high beam status: activated (true) or not (false)
    fog of type boolean, , nullable
    MUST return Fog light status: on (true), off (false)
    hazard of type boolean,
    MUST return Hazard light status: on (true), off (false)
    head of type boolean,
    MUST return headlight status: on (true), off (false)
    highBeam of type boolean,
    MUST return HighBeam light status: on (true), off (false)
    leftTurn of type boolean,
    MUST return left turn signal status: on (true), off (false)
    parking of type boolean,
    MUST return Parking light status: on (true), off (false)
    rightTurn of type boolean,
    MUST return right turn signal status: on (true), off (false)
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    15.13 InteriorLightStatus Interface

    The InteriorLightStatus interface represents interior light status.

    [NoInterfaceObject]
    interface InteriorLightStatus : VehicleCommonDataType {
                    attribute boolean status;
        readponly   attribute Zone?   zone;
    };

    15.13.1 Attributes

    status of type boolean,
    MUST return interior light status for the given zone: on (true), off (false)
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    15.14 Horn Interface

    The Horn interface represents horn status.

    [NoInterfaceObject]
    interface Horn : VehicleCommonDataType {
                    attribute boolean status;
    };

    15.14.1 Attributes

    status of type boolean,
    MUST return Horn status: on (true) or off (false)

    15.15 Chime Interface

    The Chime interface represents chime status.

    [NoInterfaceObject]
    interface Chime : VehicleCommonDataType {
        readonly    attribute boolean status;
    };

    15.15.1 Attributes

    status of type boolean, readonly
    MUST return Chime status when a door is open: on (true) or off (false)

    15.16 Fuel Interface

    The Fuel interface represents vehicle fuel status.

    [NoInterfaceObject]
    interface Fuel : VehicleCommonDataType {
        readonly    attribute unsigned short? level;
        readonly    attribute unsigned long?  range;
        readonly    attribute unsigned long?  instantConsumption;
                    attribute unsigned long?  averageConsumption;
        readonly    attribute unsigned long?  fuelConsumedSinceRestart;
        readonly    attribute unsigned long?  timeSinceRestart;
    };

    15.16.1 Attributes

    averageConsumption of type unsigned long, nullable
    MUST return average fuel consumption in per distance travelled (Unit: milliliters per 100 kilometers). Setting this to any value should reset the counter to '0'
    fuelConsumedSinceRestart of type unsigned long, readonly,nullable
    MUST return fuel consumed since engine start; (Unit: milliliters per 100 kilometers) resets to 0 each restart
    instantConsumption of type unsigned long, readonly,nullable
    MUST return instant fuel consumption in per distance travelled (Unit: milliliters per 100 kilometers)
    level of type unsigned short, readonly,nullable
    MUST return fuel level as a percentage of fullness
    range of type unsigned long, readonly,nullable
    MUST return estimated fuel range (Unit: meters)
    timeSinceRestart of type unsigned long, readonly,nullable
    MUST return time elapsed since vehicle restart (Unit: seconds)

    15.17 EngineOil Interface

    The EngineOil interface represents engine oil status.

    [NoInterfaceObject]
    interface EngineOil : VehicleCommonDataType {
        readonly    attribute unsigned short level;
        readonly    attribute unsigned short lifeRemaining;
        readonly    attribute long           temperature;
        readonly    attribute unsigned short pressure;
        readonly    attribute boolean        change;
    };

    15.17.1 Attributes

    change of type boolean, readonly
    MUST return engine oil change indicator status: change oil (true) or no change (false)
    level of type unsigned short, readonly
    MUST return engine oil level (Unit: percentage, 0%: empty, 100%: full
    lifeRemaining of type unsigned short, readonly
    MUST return remaining engine oil life (Unit: percentage, 0%:no life remaining, 100%: full life remaining
    pressure of type unsigned short, readonly
    MUST return Engine Oil Pressure (Unit: kilopascals)
    temperature of type long, readonly
    MUST return Engine Oil Temperature (Unit: celcius)

    15.18 Acceleration Interface

    The Acceleration interface represents vehicle acceleration.

    [NoInterfaceObject]
    interface Acceleration : VehicleCommonDataType {
        readonly    attribute long x;
        readonly    attribute long y;
        readonly    attribute long z;
    };

    15.18.1 Attributes

    x of type long, readonly
    MUST return acceleration on the "X" axis (Unit: centimeters per second squared)
    y of type long, readonly
    MUST return acceleration on the "Y" axis (Unit: centimeters per second squared)
    z of type long, readonly
    MUST return acceleration on the "Z" axis (Unit: centimeters per second squared)

    15.19 EngineCoolant Interface

    The EngineCoolant represents values related to engine coolant.

    [NoInterfaceObject]
    interface EngineCoolant : VehicleCommonDataType {
        readonly    attribute octet level;
        readonly    attribute short temperature;
    };

    15.19.1 Attributes

    level of type octet, readonly
    MUST return engine coolant level (Unit: percentage 0%: empty, 100%: full)
    temperature of type short, readonly
    MUST return engine coolant temperature (Unit: celcius)

    15.20 SteeringWheel Interface

    The SteeringWheel represents steering wheel data.

    [NoInterfaceObject]
    interface SteeringWheel : VehicleCommonDataType {
        readonly    attribute short angle;
    };

    15.20.1 Attributes

    angle of type short, readonly
    MUST return angle of steering wheel off centerline (Unit: degrees -:degrees to the left, +:degrees to the right)

    15.21 WheelTick Interface

    The WheelTick number of ticks per second.

    [NoInterfaceObject]
    interface WheelTick : VehicleCommonDataType {
        readonly    attribute unsigned long value;
        readonly    attribute Zone?         zone;
    };

    15.21.1 Attributes

    value of type unsigned long, readonly
    MUST return number of ticks per second (Unit: ticks per second)
    zone of type Zone,readonly, nullable
    MUST return Zone for requested attribute

    15.22 IgnitionTime Interface

    The IgnitionTime represents status of ignition.

    [NoInterfaceObject]
    interface IgnitionTime : VehicleCommonDataType {
        readonly    attribute DOMTimeStamp ignitionOnTime;
        readonly    attribute DOMTimeStamp ignitionOffTime;
    };

    15.22.1 Attributes

    ignitionOffTime of type DOMTimeStamp, readonly
    MUST return time at ignition off
    ignitionOnTime of type DOMTimeStamp, readonly
    MUST return time at ignition on

    15.23 YawRate Interface

    The YawRate represents vehicle yaw rate.

    [NoInterfaceObject]
    interface YawRate : VehicleCommonDataType {
        readonly    attribute short value;
    };

    15.23.1 Attributes

    value of type short, readonly
    MUST return yaw rate of vehicle. (Unit: degrees per second)

    15.24 BrakeOperation Interface

    The BrakeOperation represents vehicle brake operation.

    [NoInterfaceObject]
    interface BrakeOperation : VehicleCommonDataType {
        readonly    attribute boolean brakePedalDepressed;
    };

    15.24.1 Attributes

    brakePedalDepressed of type boolean, readonly
    MUST return whether brake pedal is depressed or not. true: brake pedal is depressed, false: brake pedal is not depressed

    15.25 ButtonEvent Interface

    The ButtonEvent represents button press events from the steering wheel or other source

    enum VehicleButton {
        "home",
        "back",
        "search",
        "call",
        "end_call",
        "media_play",
        "media_next",
        "media_previous",
        "media_pause",
        "voice_recognize",
        "enter",
        "left",
        "right",
        "up",
        "down"
    };
    Enumeration description
    home
    back
    search
    call
    end_call
    media_play
    media_next
    media_previous
    media_pause
    voice_recognize
    enter
    left
    right
    up
    down
    enum PressType {
        "press",
        "long_press",
        "release"
    };
    Enumeration description
    press
    long_press
    release
    [NoInterfaceObject]
    interface VehicleButton :  {
        readonly    attribute Button button;
        readonly    attribute ButtonEventType       state;
    };

    15.25.1 Attributes

    button of type ,Button , readonly
    MUST return the button corresponding to the events.
    state of type ButtonEventType , readonly
    MUST return the type of event
    [NoInterfaceObject]
    interface ButtonEvent : VehicleCommonDataType {
        readonly    attribute VehicleButton[] button;
    };

    15.25.2 Attributes

    button of type array of VehicleButton, , readonly
    MUST return the button events that occured. This supports multiple simultanious button events.

    15.26 DrivingMode Interface

    The DrivingMode interface provides information about whether or not the vehicle is driving. DrivingMode is an abstract data type that may combine several other data types such as vehicle speed, transmission gear, etc. Typical usage would be to disable certain functions in the application if the vehicle is not safe to operate those functions to avoid driver distraction.

    [NoInterfaceObject]
    interface DrivingMode : VehicleCommonDataType {
        readonly    attribute boolean mode;
    };

    15.26.1 Attributes

    mode of type boolean, readonly
    MUST return true if vehicle is in driving mode

    15.27 NightMode Interface

    The NightMode interface provides information about whether or not it is night time. NightMode is an abstract data type that may combine several other data types such as exterior brightness, time of day, sunrise/sunset, etc to determine whether or not it is night time. Typical usage is to change the UI theme to a darker theme during the night.

    [NoInterfaceObject]
    interface NightMode : VehicleCommonDataType {
        readonly    attribute boolean mode;
    };

    15.27.1 Attributes

    mode of type boolean, readonly
    MUST return true if it is night time

    16. Maintenance Interfaces

    Interfaces relating to vehicle maintenance, the act of inspecting or testing the condition of vehicle subsystems (e.g., engine) and servicing or replacing parts and fluids.

    partial interface Vehicle {
        readonly    attribute VehicleSignalInterface odometer;
        readonly    attribute VehicleSignalInterface transmissionOil;
        readonly    attribute VehicleSignalInterface transmissionClutch;
        readonly    attribute VehicleSignalInterface brakeMaintenance;
        readonly    attribute VehicleSignalInterface washerFluid;
        readonly    attribute VehicleSignalInterface malfunctionIndicator;
        readonly    attribute VehicleSignalInterface batteryStatus;
        readonly    attribute VehicleSignalInterface tire;
        readonly    attribute VehicleSignalInterface diagnostic;
    };

    16.1 Attributes

    batteryStatus of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing BatteryStatus
    brakeMaintenance of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing BrakeMaintenance
    diagnostic of type VehicleInterface, readonly
    MUST return VehicleInterface for accessing Diagnostic
    malfunctionIndicator of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing MalfunctionIndicator
    odometer of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing Odometer or undefined if not supported
    tire of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing Tire
    transmissionClutch of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing TransmissionClutch
    transmissionOil of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing TransmissionOil
    washerFluid of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing WasherFluid

    16.2 Odometer Interface

    The Odometer interface provides information about the distance that the vehicle has traveled.

    [NoInterfaceObject]
    interface Odometer : VehicleCommonDataType {
        readonly    attribute unsigned long? distanceSinceStart;
        readonly    attribute unsigned long  distanceTotal;
    };

    16.2.1 Attributes

    distanceSinceStart of type unsigned long, readonly , nullable
    MUST return the distance traveled by vehicle since start (Unit: meters).
    distanceTotal of type unsigned long, readonly
    MUST return the total distance traveled by the vehicle (Unit: meters).

    16.3 TransmissionOil Interface

    The TransmissionOil interface provides information about the state of a vehicles transmission oil.

    [NoInterfaceObject]
    interface TransmissionOil : VehicleCommonDataType {
        readonly    attribute octet?  wear;
        readonly    attribute byte? temperature;
    };

    16.3.1 Attributes

    temperature of type byte, readonly , nullable
    MUST return current temperature of the transmission oil(Unit: celsius).
    wear of type octet, readonly , nullable
    MUST return transmission oil wear (Unit: percentage, 0: no wear, 100: completely worn).

    16.4 TransmissionClutch Interface

    The TransmissionClutch interface provides information about the state of a vehicles transmission clutch.

    [NoInterfaceObject]
    interface TransmissionClutch : VehicleCommonDataType {
        readonly    attribute octet wear;
    };

    16.4.1 Attributes

    wear of type octet, readonly
    MUST return transmission clutch wear (Unit: percentage, 0%: no wear, 100%: completely worn).

    16.5 BrakeMaintenance Interface

    The BrakeMaintenance interface provides information about the maintenance state of a vehicles brakes.

    [NoInterfaceObject]
    interface BrakeMaintenance : VehicleCommonDataType {
        readonly    attribute octet?         fluidLevel;
        readonly    attribute boolean?       fluidLevelLow;
        readonly    attribute octet?         padWear;
        readonly    attribute boolean?       brakesWorn;
        readonly    attribute Zone?          zone;
    };

    16.5.1 Attributes

    brakesWorn of type boolean, readonly , nullable
    MUST return true if brakes are worn: worn (true), not worn (false)
    fluidLevel of type octet, readonly , nullable
    MUST return brake fluid level (Unit: percentage, 0%: empty, 100%: full).
    fluidLevelLow of type boolean, readonly , nullable
    MUST return true if brake fluid level: low (true), not low (false)
    padWear of type octet, readonly , nullable
    MUST return brake pad wear (Unit: percentage, 0%: no wear, 100%: completely worn).
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    16.6 WasherFluid Interface

    The WasherFluid interface provides information about the state of a vehicles washer fluid.

    [NoInterfaceObject]
    interface WasherFluid : VehicleCommonDataType {
        readonly    attribute unsigned short? level;
        readonly    attribute boolean?        levelLow;
    };

    16.6.1 Attributes

    level of type unsigned short, readonly , nullable
    MUST return washer fluid level (Unit: percentage, 0%: empty, 100%: full).
    levelLow of type boolean, readonly , nullable
    MUST return true if washer fluid level is low: low (true), not low: (false)

    16.7 MalfunctionIndicator Interface

    The MalfunctionIndicator interface provides information about the state of a vehicles Malfunction Indicator lamp.

    [NoInterfaceObject]
    interface MalfunctionIndicator : VehicleCommonDataType {
        readonly    attribute boolean on;
    };

    16.7.1 Attributes

    on of type boolean, readonly
    MUST return true if malfunction indicator lamp is on: lamp on (true), lamp not on (false)

    16.8 BatteryStatus Interface

    The BatteryStatus interface provides information about the state of a vehicles battery.

    [NoInterfaceObject]
    interface BatteryStatus : VehicleCommonDataType {
        readonly    attribute unsigned short? chargeLevel;
        readonly    attribute unsigned short? voltage;
        readonly    attribute unsigned short? current;
        readonly    attribute Zone?           zone;
    };

    16.8.1 Attributes

    chargeLevel of type unsigned short, readonly , nullable
    MUST return battery charge level (Unit: percentage, 0%: empty, 100%: full).
    current of type unsigned short, readonly , nullable
    MUST return battery current (Unit: amperes).
    voltage of type unsigned short, readonly , nullable
    MUST return battery voltage (Unit: volts).
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    16.9 Tire Interface

    The Tire interface provides information about the state of a vehicles tires.

    [NoInterfaceObject]
    interface Tire : VehicleCommonDataType {
        readonly    attribute boolean?        pressureLow;
        readonly    attribute unsigned short? pressure;
        readonly    attribute short?          temperature;
        readonly    attribute Zone?           zone;
    };

    16.9.1 Attributes

    pressure of type unsigned short, readonly , nullable
    MUST return tire pressure (Unit: kilopascal).
    pressureLow of type boolean, readonly , nullable
    MUST return true if any tire pressure is low: pressure low (true), pressure not low (false)
    temperature of type short, readonly , nullable
    MUST return tire temperature (Unit: celsius).
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    16.10 Diagnostic Interface

    The Diagnostic interface represents Diagnostic interface to malfunction indicator light information.

    [NoInterfaceObject]
    interface Diagnostic : VehicleCommonDataType {
        readonly    attribute unsigned long accumulatedEngineRuntime;
        readonly    attribute unsigned long distanceWithMILOn;
        readonly    attribute unsigned long distanceSinceCodeCleared.;
        readonly    attribute unsigned long timeRunMILOn;
        readonly    attribute unsigned long timeTroubleCodeClear;
    };

    16.10.1 Attributes

    accumulatedEngineRuntime of type unsigned long, readonly
    MUST return engine runtime (Unit: seconds)
    distanceSinceCodeCleared. of type unsigned long, readonly
    MUST return distance travelled since the codes were last cleared (Unit: meters)
    distanceWithMILOn of type unsigned long, readonly
    MUST return distance travelled with the malfunction indicator light on (Unit: meters)
    timeRunMILOn of type unsigned long, readonly
    MUST return time elapsed with the malfunction indicator light on (Unit: seconds)
    timeTroubleCodeClear of type unsigned long, readonly
    MUST return time elapsed since the trouble codes were last cleared (Unit: seconds)

    17. Personalization Interfaces

    Interfaces relating personalization the settings of vehicle such as seat and mirror position.

    partial interface Vehicle {
        readonly    attribute VehicleSignalInterface? languageConfiguration;
        readonly    attribute VehicleSignalInterface  unitsOfMeasure;
        readonly    attribute VehicleSignalInterface  mirror;
        readonly    attribute VehicleSignalInterface  steeringWheel;
        readonly    attribute VehicleSignalInterface  driveMode;
        readonly    attribute VehicleSignalInterface  seatAdjustment;
        readonly    attribute VehicleSignalInterface  dashboardIllumination;
        readonly    attribute VehicleSignalInterface  vehicleSound;
    };

    17.1 Attributes

    dashboardIllumination of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing DashboardIllumination
    driveMode of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing DriveMode
    languageConfiguration of type VehicleSignalInterface, readonly , nullable
    MUST return VehicleSignalInterface for accessing LanguageConfiguration
    mirror of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing Mirror
    seatAdjustment of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing SeatAdjustment
    steeringWheel of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing SteeringWheel
    unitsOfMeasure of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing UnitsOfMeasure
    vehicleSound of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing VehicleSound

    17.2 LanguageConfiguration Interface

    The LanguageConfiguration interface provides language information about a vehicle.

    [NoInterfaceObject]
    interface LanguageConfiguration : VehicleCommonDataType {
                    attribute DOMString? language;
    };

    17.2.1 Attributes

    language of type DOMString, , nullable
    MUST return language identifier based on two-letter codes as specified in ISO 639-1

    17.3 UnitsOfMeasure Interface

    The UnitsOfMeasure interface provides information about the measurement system and units of measure of a vehicle.

    [NoInterfaceObject]
    interface UnitsOfMeasure : VehicleCommonDataType {
                    attribute boolean?   isMKSSystem;
                    attribute DOMString? unitsFuelVolume;
                    attribute DOMString? unitsDistance;
                    attribute DOMString? unitsSpeed;
                    attribute DOMString? unitsFuelConsumption;
    };

    17.3.1 Attributes

    isMKSSystem of type boolean, , nullable
    MUST return measurement system currently being used by vehicle. 'true' means the current measurement system is MKS-km(liter). 'false' means it is US customary units-mile(gallon).
    unitsDistance of type DOMString, , nullable
    MUST return distance unit of measurement. The value is one of both "km" and "mile".
    unitsFuelConsumption of type DOMString, , nullable
    MUST return fuel consumption unit of measurement. The value is one of following values: "l/100", "mpg", "km/l".
    unitsFuelVolume of type DOMString, , nullable
    MUST return fuel unit of measurement. The value is one of both "litter" and "gallon".
    unitsSpeed of type DOMString, , nullable
    MUST return speed unit of measurement. The value is one of both "km/h" and "mph".

    17.4 Mirror Interface

    The Mirror interface provides or sets information about mirrors in vehicle.

    [NoInterfaceObject]
    interface Mirror : VehicleCommonDataType {
                    attribute unsigned short? mirrorTilt;
                    attribute unsigned short? mirrorPan;
      readonly      attribute Zone?           zone;
    };

    17.4.1 Attributes

    mirrorPan of type unsigned short, , nullable
    MUST return mirror pan position in percentage distance travelled, from left to right position (Unit: percentage, %0:center position, -100%:fully left, 100%:fully right)
    mirrorTilt of type unsigned short, , nullable
    MUST return mirror tilt position in percentage distance travelled, from downward-facing to upward-facing position (Unit: percentage, 0%:center position, -100%:fully downward, 100%:full upward)
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    17.5 SeatAdjustment Interface

    The SeatAdjustment interface provides or sets information about seats in vehicle.

    [NoInterfaceObject]
    interface SeatAdjustment : VehicleCommonDataType {
                    attribute unsigned short? reclineSeatBack;
                    attribute unsigned short? seatSlide;
                    attribute unsigned short? seatCushionHeight;
                    attribute unsigned short? seatHeadrest;
                    attribute unsigned short? seatBackCushion;
                    attribute unsigned short? seatSideCushion;
       readonly     attribute Zone?           zone;
    };

    17.5.1 Attributes

    reclineSeatBack of type unsigned short, , nullable
    Seat back recline position as percent to completely reclined (Unit: percentage, 0%:upright at a 90 degree angle, 100%:fully reclined, -100%:fully forward)
    seatBackCushion of type unsigned short, , nullable
    MUST return back cushion position as a percentage of lumbar curvature (Unit: percentage, 0%:flat, 100%: maximum curvature)
    seatCushionHeight of type unsigned short, , nullable
    MUST return seat cushion height position as a percentage of upward distance travelled (Unit: percentage, 0%:lowest. 100%:highest)
    seatHeadrest of type unsigned short, , nullable
    MUST return headrest position as a percentage of upward distance travelled (Unit: percentage, 0%:lowest, 100%:highest)
    seatSideCushion of type unsigned short, , nullable
    MUST return sides of back cushion position as a percentage of curvature (Unit: percentage, 0%:flat, 100%:maximum curvature)
    seatSlide of type unsigned short, , nullable
    MUST return seat slide position as percentage of distance travelled away from forwardmost position (Unit: percentage, 0%:farthest forward, 100%:farthest back)
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    17.6 DriveMode Interface

    The DriveMode interface provides or sets information about a vehicles drive mode.

    enum DriveModeEnum {
        "comfort",
        "auto",
        "sport",
        "eco",
        "manual",
        "winter"
    };
    Enumeration description
    comfort Comfort mode
    auto Automatically set mode
    sport Sport mode
    eco Ecological/fuel efficient mode
    manual Manual mode
    winter Winter/slippery mode
    [NoInterfaceObject]
    interface DriveMode : VehicleCommonDataType {
                    attribute DriveModeEnum? driveMode;
    };

    17.6.1 Attributes

    driveMode of type DriveModeEnum , , nullable
    MUST return vehicle driving mode

    17.8 DashboardIllumination Interface

    The DashboardIllumination interface provides or sets information about dashboard illumination in vehicle.

    [NoInterfaceObject]
    interface DashboardIllumination : VehicleCommonDataType {
                    attribute DOMString? dashboardIllumination;
    };

    17.8.1 Attributes

    dashboardIllumination of type DOMString, , nullable
    MUST return illumination of dashboard as a percentage (Unit: percentage, 0%:none, 100%:maximum illumination)

    17.9 VehicleSound Interface

    The VehicleSound interface provides or sets information about vehicle sound.

    [NoInterfaceObject]
    interface VehicleSound : VehicleCommonDataType {
                    attribute boolean    activeNoiseControlMode;
                    attribute DOMString? engineSoundEnhancementMode;
    };

    17.9.1 Attributes

    activeNoiseControlMode of type boolean,
    MUST return active noise control status: not-activated (false), activated (true)
    engineSoundEnhancementMode of type DOMString, , nullable
    MUST return engine sound enhancement mode where a null string means not-activated, and any other value represents a manufacture specific setting

    18. DrivingSafety Interfaces

    Interfaces related to driving safety such as anti-lock braking and airbag status.

    partial interface Vehicle {
        readonly    attribute VehicleSignalInterface antilockBrakingSystem;
        readonly    attribute VehicleSignalInterface tractionControlSystem;
        readonly    attribute VehicleSignalInterface electronicStabilityControl;
        readonly    attribute VehicleSignalInterface topSpeedLimit;
        readonly    attribute VehicleSignalInterface airbagStatus;
        readonly    attribute VehicleSignalInterface door;
        readonly    attribute VehicleSignalInterface childSafetyLock;
        readonly    attribute VehicleSignalInterface seat;
    };

    18.1 Attributes

    airbagStatus of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing AirbagStatus
    antilockBrakingSystem of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing AntilockBrakingSystem
    childSafetyLock of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing ChildSafetyLock
    door of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing Door
    electronicStabilityControl of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing ElectronicStabilityControl
    seat of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing Seat
    topSpeedLimit of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing TopSpeedLimit
    tractionControlSystem of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing TractionControlSystem

    18.2 AntilockBrakingSystem Interface

    The AntilockBrakingSystem interface provides status of ABS(Antilock Braking System) status and setting.

    [NoInterfaceObject]
    interface AntilockBrakingSystem : VehicleCommonDataType {
        readonly    attribute boolean enabled;
        readonly    attribute boolean engaged;
    };

    18.2.1 Attributes

    enabled of type boolean, readonly
    MUST return whether or not the ABS Setting is enabled: enabled (true) or disabled (false)
    engaged of type boolean, readonly
    MUST return whether or not the ABS is engaged: engaged (true) or idle (false)

    18.3 TractionControlSystem Interface

    The TractionControlSystem interface provides status of TCS(Traction Control System) status and setting.

    [NoInterfaceObject]
    interface TractionControlSystem : VehicleCommonDataType {
        readonly    attribute boolean enabled;
        readonly    attribute boolean engaged;
    };

    18.3.1 Attributes

    enabled of type boolean, readonly
    MUST return whether or not the TCS Setting is enabled: enabled (true) or disabled (false)
    engaged of type boolean, readonly
    MUST return whether or not the TCS is engaged: engaged (true) or idle (false)

    18.4 ElectronicStabilityControl Interface

    The ElectronicStabilityControl interface provides status of ESC(Electronic Stability Control) status and setting.

    [NoInterfaceObject]
    interface ElectronicStabilityControl : VehicleCommonDataType {
        readonly    attribute boolean enabled;
        readonly    attribute boolean engaged;
    };

    18.4.1 Attributes

    enabled of type boolean, readonly
    MUST return whether or not the ESC Setting is enabled: enabled (true) or disabled (false)
    engaged of type boolean, readonly
    MUST return whether or not the ESC is engaged: engaged (true) or idle (false)

    18.5 TopSpeedLimit Interface

    The TopSpeedLimit interface provides the current setting of top speed limit of the vehicle.

    [NoInterfaceObject]
    interface TopSpeedLimit : VehicleCommonDataType {
        readonly    attribute unsigned short speed;
    };

    18.5.1 Attributes

    speed of type unsigned short, readonly
    MUST return vehicle top speed limit (Unit: kilometers per hour)

    18.6 AirbagStatus Interface

    The AirbagStatus interface provides the current status of airbags in each zones of the vehicle.

    [NoInterfaceObject]
    interface AirbagStatus : VehicleCommonDataType {
        readonly    attribute boolean activated;
        readonly    attribute boolean deployed;
        readonly    attribute Zone?   zone;
    };

    18.6.1 Attributes

    activated of type boolean, readonly
    MUST return whether or not the airbag is activaged: activated (true) or deactivated (false)
    deployed of type boolean, readonly
    MUST return whether the airbag is deployed: deployed (true) or not (false)
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    18.7 Door Interface

    The Door interface provides the current status of doors in each zones of the vehicle.

    enum DoorOpenStatus {
        "open",
        "ajar",
        "closed"
    };
    Enumeration description
    open Door is opened
    ajar Door is ajar
    closed Door is closed
    [NoInterfaceObject]
    interface Door : VehicleCommonDataType {
        readonly    attribute DoorOpenStatus status;
                    attribute boolean        lock;
        readonly    attribute Zone?          zone;
    };

    18.7.1 Attributes

    lock of type boolean,
    MUST return whether or not the door is locked: locked (true) or unlocked (false)
    status of type DoorOpenStatus , readonly
    MUST return the status of door's open status
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    18.8 ChildSafetyLock Interface

    The ChildSafetyLock interface provides the current setting of Child Safety Lock.

    [NoInterfaceObject]
    interface ChildSafetyLock : VehicleCommonDataType {
                    attribute boolean lock;
       readonly     attribute Zone?   zone;
    };

    18.8.1 Attributes

    lock of type boolean,
    MUST return whether or not the Child Safety Lock is locked: locked (true) or unlocked (false)
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    18.9 Seat Interface

    The Seat interface provides the current occupant information and seatbelt status of a seat in different zones of the vehicle.

    enum OccupantStatus {
        "adult",
        "child",
        "vacant"
    };
    Enumeration description
    adult Occupant is an adult
    child Occupant is a child
    vacant Seat is vacant
    enum IdentificationType {
        "pin",
        "keyfob",
        "Bluetooth",
        "NFC",
        "fingerprint",
        "camera",
        "voice"
    };
    Enumeration description
    pin Four digit pin number entered by user
    keyfob Identification by key fob
    Bluetooth Identification by Bluetooth device
    NFC Identification by NFC device
    fingerprint Identification by fingerprint
    camera Identification by camera
    voice Identification by voice
    [NoInterfaceObject]
    interface Seat : VehicleCommonDataType {
        readonly    attribute OccupantStatus     occupant;
        readonly    attribute boolean            seatbelt;
        readonly    attribute DOMString?         occupantName;
        readonly    attribute IdentificationType identificationType;
        readonly    attribute Zone?              zone;
    };

    18.9.1 Attributes

    identificationType of type IdentificationType , readonly
    MUST return identification type
    occupant of type OccupantStatus , readonly
    MUST return the status of seat occupant
    occupantName of type DOMString, readonly , nullable
    Must return occupant identifier
    seatbelt of type boolean, readonly
    MUST return whether or not the seat belt is fastened: fastened (true) or unfastened (false)
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    19. Climate Interfaces

    Interfaces related to vehicle climate (interior and exterior) such as temperature and rain.

    partial interface Vehicle {
        readonly    attribute VehicleSignalInterface temperature;
        readonly    attribute VehicleSignalInterface rainSensor;
        readonly    attribute VehicleSignalInterface wiperStatus;
        readonly    attribute VehicleSignalInterface wiperSetting;
        readonly    attribute VehicleSignalInterface defrost;
        readonly    attribute VehicleSignalInterface sunroof;
        readonly    attribute VehicleSignalInterface convertibleRoof;
        readonly    attribute VehicleSignalInterface sideWindow;
        readonly    attribute VehicleSignalInterface climateControl;
        readonly    attribute VehicleSignalInterface atmosphericPressure;
    };

    19.1 Attributes

    atmosphericPressure of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing AtmosphericPressure
    climateControl of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing ClimateControl or undefined if not supported
    convertibleRoof of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing ConvertibleRoof
    defrost of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing Defrost
    rainSensor of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing RainSensor
    sideWindow of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing SideWindow
    sunroof of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing Sunroof
    temperature of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing Temperature
    wiperSetting of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing WiperSetting
    wiperStatus of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing WiperStatus

    19.2 Temperature Interface

    The Temperature interface provides information about the current temperature of outside or inside vehicle.

    [NoInterfaceObject]
    interface Temperature : VehicleCommonDataType {
        readonly    attribute float interiorTemperature;
        readonly    attribute float exteriorTemperature;
    };

    19.2.1 Attributes

    exteriorTemperature of type float, readonly
    MUST return the current temperature of the air around the vehicle (Unit: celsius)
    interiorTemperature of type float, readonly
    MUST return the current temperature of the air inside of the vehicle (Unit: celsius)

    19.3 RainSensor Interface

    The RainSensor interface provides information about ambient light levels.

    [NoInterfaceObject]
    interface RainSensor : VehicleCommonDataType {
        readonly    attribute unsigned byte rain;
        readonly    attribute Zone?         zone;
    };

    19.3.1 Attributes

    rain of type unsigned byte, readonly
    MUST return the amount of rain detected by the rain sensor. level of rain intensity (0: No Rain, 10:Heaviest Rain)
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    19.4 WiperStatus Interface

    The WiperStatus interface represents the status of wiper operation.

    [NoInterfaceObject]
    interface WiperStatus : VehicleCommonDataType {
        readonly    attribute unsigned byte wiperSpeed;
        readonly    attribute Zone?         zone;
    };

    19.4.1 Attributes

    wiperSpeed of type unsigned byte, readonly
    MUST return current speed interval of wiping windshield (0: off, 1: Slowest, 10: Fastest )
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    19.5 WiperSetting Interface

    The WiperSetting interface represents the current setting of the wiper controller.

    enum WiperControl {
        "off",
        "once",
        "slowest",
        "slow",
        "middle",
        "fast",
        "fastest",
        "auto"
    };
    Enumeration description
    off Wiper is not in operation
    once Wipe single. It's a transient state and goes to the off mode
    slowest Wiper is on mode with the slowest speed
    slow Wiper is on mode with slow speed
    middle Wiper is on mode with middle speed
    fast Wiper is on mode with fast speed
    fastest Wiper is on mode with the fastest speed
    auto Wiper is on the automatic mode which controls wiping speed with accordance with the amount of rain
    [NoInterfaceObject]
    interface WiperSetting : VehicleCommonDataType {
                    attribute WiperControl wiperControl;
        readonly    attribute Zone?        zone;
    };

    19.5.1 Attributes

    wiperControl of type WiperControl ,
    MUST return current setting of the front wiper controller. It can be used to send user's request for changing setting.
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    19.6 Defrost Interface

    The Defrost interface represents the status of wiper operation.

    [NoInterfaceObject]
    interface Defrost : VehicleCommonDataType {
                    attribute boolean? defrostWindow;
                    attribute boolean? defrostMirrors;
        readonly    attribute Zone?    zone;
    };

    19.6.1 Attributes

    defrostMirrors of type boolean, , nullable
    MUST return current status of the defrost switch for mirrors. It can be used to send user's request for changing setting.
    defrostWindow of type boolean, , nullable
    MUST return current status of the defrost switch for window. It can be used to send user's request for changing setting.
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    19.7 Sunroof Interface

    The Sunroof interface represents the current status of Sunroof.

    [NoInterfaceObject]
    interface Sunroof : VehicleCommonDataType {
                    attribute unsigned byte openness;
                    attribute unsigned byte tilt;
        readonly    attribute Zone?         zone;
    };

    19.7.1 Attributes

    openness of type unsigned byte,
    MUST return current status of Sunroof as a percentage of openness (0%: closed, 100%: fully opened)
    tilt of type unsigned byte,
    MUST return current status of Sunroof as a percentage of tilted (0%: closed, 100%: maximum tilted)
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    Both can be used to send user's request for changing setting.

    19.8 ConvertibleRoof Interface

    The ConvertibleRoof interface represents the current status of Convertible Roof.

    enum ConvertibleRoofStatus {
        "closed",
        "closing",
        "opening",
        "opened"
    };
    Enumeration description
    closed the convertible roof is closed
    closing the convertible roof is closing
    opening the convertible roof is opening
    opened the convertible roof is opened
    [NoInterfaceObject]
    interface ConvertibleRoof : VehicleCommonDataType {
                    attribute ConvertibleRoofStatus status;
    };

    19.8.1 Attributes

    status of type ConvertibleRoofStatus ,
    MUST return current status of Convertible Roof.

    It can be used to send user's request for changing setting. "closed" is used to close and "opened" is used to open.

    19.9 SideWindow Interface

    The SideWindow interface represents the current status of openness of side windows.

    [NoInterfaceObject]
    interface SideWindow : VehicleCommonDataType {
                    attribute boolean? lock;
                    attribute unsigned byte?    openness;
        readonly    attribute Zone?             zone;
    };

    19.9.1 Attributes

    lock of type unsigned boolean, , nullable
    MUST return whether or not the window is locked: locked (true) or unlocked (false)
    openness of type unsigned byte, , nullable
    MUST return current status of the side window as a percentage of openness. (0%:Closed, 100%:Fully Opened)
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    19.10 ClimateControl Interface

    The ClimateControl interface represents the current setting of the climate control equipments such as heater and air conditioner.

    enum AirflowDirection {
        "frontpanel",
        "floorduct",
        "bilevel",
        "defrostfloor"
    };
    Enumeration description
    frontpanel Air flow is directed to the instrument panel outlets
    floorduct Air flow is directed to the floor outlets
    bilevel Air flow is directed to the instrument panel outlets and the floor outlets
    defrostfloor Air flow is directed to the floor outlets and the windshield
    [NoInterfaceObject]
    interface ClimateControl : VehicleCommonDataType {
                    attribute AirflowDirection airflowDirection;
                    attribute unsigned byte    fanSpeedLevel;
                    attribute byte?            targetTemperature;
                    attribute boolean          airConditioning;
                    attribute boolean          heater;
                    attribute unsigned byte?   seatHeater;
                    attribute unsigned byte?   seatCooler;
                    attribute boolean          airRecirculation;
                    attribute unsigned byte?   steeringWheelHeater;
        readonly    attribute Zone?            zone;
    };

    19.10.1 Attributes

    airConditioning of type boolean,
    MUST return current status of the air conditioning system: on (true) or off (false)
    airRecirculation of type boolean,
    MUST return current setting of air recirculation: on (true) or pulling in outside air (false).
    airflowDirection of type AirflowDirection ,
    MUST return current status of the direction of the air flow through the ventilation system
    fanSpeedLevel of type unsigned byte,
    MUST return current status of the fan speed of the air flowing (0: off, 1: weakest, 10: strongest )
    heater of type boolean,
    MUST return current status of the heating system: on (true) or off (false)
    seatCooler of type unsigned byte, , nullable
    MUST return current status of the seat ventilation ( 0: off, 1: least warm, 10: warmest )
    seatHeater of type unsigned byte, , nullable
    MUST return current status of the seat warmer ( 0: off, 1: least warm, 10: warmest )
    steeringWheelHeater of type unsigned byte, , nullable
    MUST return current status of steering wheel heater ( 0: off, 1: least warm, 10: warmest ).
    targetTemperature of type byte, , nullable
    MUST return current setting of the desired temperature (Unit: celsius)
    zone of type Zone, readonly , nullable
    MUST return Zone for requested attribute

    ClimateControl can be used to send user's request for changing setting.

    19.11 AtmosphericPressure Interface

    The AtmosphericPressure interface provides information about the current atmospheric pressure outside of the vehicle.

    [NoInterfaceObject]
    interface AtmosphericPressure : VehicleCommonDataType {
        readonly    attribute unsigned short pressure;
    };

    19.11.1 Attributes

    pressure of type unsigned short, readonly
    MUST return the current atmospherics pressure outside of the vehicle (Unit: hectopascal)

    20. Vision and Parking Interfaces

    Interfaces relating to vision and parking such as lane departure and parking brake.

    partial interface Vehicle {
        readonly    attribute VehicleSignalInterface laneDepartureStatus;
        readonly    attribute VehicleSignalInterface alarm;
        readonly    attribute VehicleSignalInterface parkingBrake;
        readonly    attribute VehicleSignalInterface parkingLights;
    };

    20.1 Attributes

    alarm of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing Alarm
    laneDepartureStatus of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing LaneDepartureStatus or undefined if not supported
    parkingBrake of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing ParkingBrake
    parkingLights of type VehicleSignalInterface, readonly
    MUST return VehicleSignalInterface for accessing ParkingLights

    20.2 LaneDepartureDetection Interface

    The LaneDepartureDetection interface represents the current status of the lane departure warning function.

    enum LaneDepartureStatus {
        "off",
        "pause",
        "running"
    };
    Enumeration description
    off The function is not running
    pause The function has been paused (running, but inactive)
    running The function is in its operational mode
    [NoInterfaceObject]
    interface LaneDepartureDetection : VehicleCommonDataType {
        readonly    attribute LaneDepartureStatus status;
    };

    20.2.1 Attributes

    status of type LaneDepartureStatus , readonly
    MUST return current status of Lane departure warning function.

    20.3 Alarm Interface

    The Alarm interface represents the current status of the in vehicle Alarm system.

    enum AlarmStatus {
        "disarmed",
        "preArmed",
        "armed",
        "alarmed"
    };
    Enumeration description
    disarmed The alarm is not armed
    preArmed The function is temporary not active
    armed The function is active
    alarmed The alarm is screaming
    [NoInterfaceObject]
    interface Alarm : VehicleCommonDataType {
                    attribute AlarmStatus status;
    };

    20.3.1 Attributes

    status of type AlarmStatus ,
    MUST return current status of In vehicle Alarm System.

    20.4 ParkingBrake Interface

    The ParkingBrake interface represents the current status of the parking brake.

    enum ParkingBrakeStatus {
        "inactive",
        "active",
        "error"
    };
    Enumeration description
    inactive Parking brake is not engaged (driving position)
    active Parking brake is engaged (parking position)
    error There is a problem with the parking brake system
    [NoInterfaceObject]
    interface ParkingBrake : VehicleCommonDataType {
        readonly    attribute ParkingBrakeStatus status;
    };

    20.4.1 Attributes

    status of type ParkingBrakeStatus , readonly
    MUST return current status of parking brake.

    20.5 ParkingLights Interface

    The ParkingLights interface represents the current status of the parking Lights.

    [NoInterfaceObject]
    interface ParkingLights : VehicleCommonDataType {
        readonly    attribute boolean status;
                    attribute boolean setting;
    };

    20.5.1 Attributes

    setting of type boolean,
    MUST return whether or not the Parking Lights is enabled: enabled (true) or disabled (false).
    It can be used to send user's request for changing setting.
    status of type boolean, readonly
    MUST return parking light status: on (true) or off (false)

    21. Full WebIDL

    
    module Vehicle {
        [NoInterfaceObject]
        interface VehicleManagerObject {
            readonly attribute Vehicle vehicle;
        };
    
        Navigator implements VehicleManagerObject;
    
        [NoInterfaceObject]
        interface Vehicle {
            readonly attribute VehicleConfigurationInterface identification;
            readonly attribute VehicleConfigurationInterface sizeConfiguration;
            readonly attribute VehicleConfigurationInterface fuelConfiguration;
            readonly attribute VehicleConfigurationInterface transmissionConfiguration;
            readonly attribute VehicleConfigurationInterface wheelConfiguration;
            readonly attribute VehicleSignalInterface steeringWheelConfiguration;
    
            readonly attribute VehicleSignalInterface vehicleSpeed;
            readonly attribute VehicleSignalInterface wheelSpeed;
            readonly attribute VehicleSignalInterface engineSpeed;
            readonly attribute VehicleSignalInterface powerTrainTorque;
            readonly attribute VehicleSignalInterface acceleratorPedalPosition;
            readonly attribute VehicleSignalInterface throttlePosition;
            readonly attribute VehicleSignalInterface tripMeters;
            readonly attribute VehicleSignalInterface transmission;
            readonly attribute VehicleSignalInterface cruiseControlStatus;
            readonly attribute VehicleSignalInterface lightStatus;
            readonly attribute VehicleSignalInterface interiorLightStatus;
            readonly attribute VehicleSignalInterface horn;
            readonly attribute VehicleSignalInterface chime;
            readonly attribute VehicleSignalInterface fuel;
            readonly attribute VehicleSignalInterface engineOil;
            readonly attribute VehicleSignalInterface acceleration;
            readonly attribute VehicleSignalInterface engineCoolant;
            readonly attribute VehicleSignalInterface steeringWheel;
            readonly attribute VehicleSignalInterface ignitionTime;
            readonly attribute VehicleSignalInterface yawRate;
            readonly attribute VehicleSignalInterface brakeOperation;
            readonly attribute VehicleSignalInterface wheelTick;
            readonly attribute VehicleSignalInterface buttonEvent;
            readonly attribute VehicleSignalInterface drivingMode;
            readonly attribute VehicleSignalInterface nightMode;
    
            readonly attribute VehicleSignalInterface odometer;
            readonly attribute VehicleSignalInterface transmissionOil;
            readonly attribute VehicleSignalInterface transmissionClutch;
            readonly attribute VehicleSignalInterface brakeMaintenance;
            readonly attribute VehicleSignalInterface washerFluid;
            readonly attribute VehicleSignalInterface malfunctionIndicator;
            readonly attribute VehicleSignalInterface batteryStatus;
            readonly attribute VehicleSignalInterface tire;
            readonly attribute VehicleSignalInterface diagnostic;
    
            readonly attribute VehicleSignalInterface? languageConfiguration;
            readonly attribute VehicleSignalInterface unitsOfMeasure;
            readonly attribute VehicleSignalInterface mirror;
            readonly attribute VehicleSignalInterface driveMode;
            readonly attribute VehicleSignalInterface seatAdjustment;
            readonly attribute VehicleSignalInterface dashboardIllumination;
            readonly attribute VehicleSignalInterface vehicleSound;
            readonly attribute VehicleSignalInterface antilockBrakingSystem;
            readonly attribute VehicleSignalInterface tractionControlSystem;
            readonly attribute VehicleSignalInterface electronicStabilityControl;
            readonly attribute VehicleSignalInterface topSpeedLimit;
            readonly attribute VehicleSignalInterface airbagStatus;
            readonly attribute VehicleSignalInterface door;
            readonly attribute VehicleSignalInterface childSafetyLock;
            readonly attribute VehicleSignalInterface seat;
    
            readonly attribute VehicleSignalInterface temperature;
            readonly attribute VehicleSignalInterface rainSensor;
            readonly attribute VehicleSignalInterface wiperStatus;
            readonly attribute VehicleSignalInterface wiperSetting;
            readonly attribute VehicleSignalInterface defrost;
            readonly attribute VehicleSignalInterface sunroof;
            readonly attribute VehicleSignalInterface convertibleRoof;
            readonly attribute VehicleSignalInterface sideWindow;
            readonly attribute VehicleSignalInterface climateControl;
            readonly attribute VehicleSignalInterface atmosphericPressure;
    
            readonly attribute VehicleSignalInterface laneDepartureStatus;
            readonly attribute VehicleSignalInterface alarm;
            readonly attribute VehicleSignalInterface parkingBrake;
            readonly attribute VehicleSignalInterface parkingLights;
        };
    
        enum ZonePosition {"front", "middle", "right", "left", "rear", "center"};
    
        [NoInterfaceObject]
        interface Zone {
                     attribute DOMString[] value;
            readonly attribute Zone        driver;
    
            boolean equals (Zone zone);
            boolean contains (Zone zone);
        };
    
    
        [Callback=FunctionOnly, NoInterfaceObject]
        interface VehicleInterfaceCallback {
            void onsuccess (object value);
        };
    
        [Callback=FunctionOnly, NoInterfaceObject]
        interface AvailableCallback {
            void onsuccess (Availability available);
        };
    
        enum VehicleError {"permission_denied", "invalid_operation", "timeout", "invalid_zone", "unknown"};
    
        [NoInterfaceObject]
        interface VehicleInterfaceError {
            readonly attribute VehicleError error;
            readonly attribute DOMString    message;
        };
    
        [NoInterfaceObject]
        interface VehicleInterface {
        Availability availableForRetrieval (DOMString attributeName);
            Promise get (optional Zone zone);
            Promise getHistory (Date begin, Date end, optional Zone zone);
            short   availabilityChangedListener (AvailableCallback callback);
            void    removeAvailabilityChangedListener (short handle);
            readonly attribute Zone[]  zones;
            readonly attribute boolean supported;
            readonly attribute boolean isLogged;
            readonly attribute Date?   from;
            readonly attribute Date?   to;
        };
    
        [NoInterfaceObject]
        interface VehicleConfigurationInterface : VehicleInterface {};
    
        [NoInterfaceObject]
        interface VehicleSignalInterface : VehicleInterface {
            Availability   availableForSubscription (DOMString attributeName);
            Availability   availableForSetting (DOMString attributeName);
            Promise        set (object value, optional Zone zone);
            unsigned short subscribe (VehicleInterfaceCallback callback, optional Zone zone);
            void           unsubscribe (unsigned short handle);
        };
    
        enum Availability {"available", "not_supported", "not_supported_yet", "not_supported_security_policy", "not_supported_business_policy", "not_supported_other"};
    
        [NoInterfaceObject]
        interface VehicleCommonDataType {
            readonly attribute DOMTimeStamp? timeStamp;
        };
    
        enum VehicleTypeEnum {"passengerCarMini", "passengerCarLight", "passengerCarCompact", "passengerCarMedium", "passengerCarHeavy", "sportUtilityVehicle", "pickupTruck", "van"};
    
        [NoInterfaceObject]
        interface Identification : VehicleCommonDataType {
            readonly attribute DOMString?       VIN;
            readonly attribute DOMString?       WMI;
            readonly attribute VehicleTypeEnum? vehicleType;
            readonly attribute DOMString?       brand;
            readonly attribute DOMString?       model;
            readonly attribute unsigned short?  year;
        };
    
        [NoInterfaceObject]
        interface SizeConfiguration : VehicleCommonDataType {
            readonly attribute unsigned short?   width;
            readonly attribute unsigned short?   height;
            readonly attribute unsigned short?   length;
            readonly attribute unsigned short[]? doorsCount;
            readonly attribute unsigned short?   totalDoors;
        };
    
        enum FuelTypeEnum {"gasoline", "methanol", "ethanol", "diesel", "lpg", "cng", "electric"};
    
        [NoInterfaceObject]
        interface FuelConfiguration : VehicleCommonDataType {
            readonly attribute FuelTypeEnum[]? fuelType;
            readonly attribute Zone?           refuelPosition;
        };
    
        enum TransmissionGearTypeEnum {"auto", "manual"};
    
        [NoInterfaceObject]
        interface TransmissionConfiguration : VehicleCommonDataType {
            readonly attribute TransmissionGearTypeEnum? transmissionGearType;
        };
    
        [NoInterfaceObject]
        interface WheelConfiguration : VehicleCommonDataType {
            readonly attribute unsigned short? wheelRadius;
            readonly attribute Zone?           zone;
        };
    
        [NoInterfaceObject]
        interface SteeringWheelConfiguration : VehicleCommonDataType {
            readonly attribute boolean? steeringWheelLeft;
                     attribute unsigned short? steeringWheelTelescopingPosition;
                     attribute unsigned short? steeringWheelPositionTilt;
        };
    
        [NoInterfaceObject]
        interface VehicleSpeed : VehicleCommonDataType {
            readonly attribute unsigned short speed;
        };
    
        [NoInterfaceObject]
        interface WheelSpeed : VehicleCommonDataType {
            readonly attribute unsigned short speed;
            readonly attribute Zone?          zone;
        };
    
        [NoInterfaceObject]
        interface EngineSpeed : VehicleCommonDataType {
            readonly attribute unsigned long speed;
        };
    
        enum VehiclePowerMode {"off", "accessory1", "accessory2", "running"};
    
        [NoInterfaceObject]
        interface VehiclePowerModeType : VehicleCommonDataType {
            readonly attribute VehiclePowerMode value;
        };
    
        [NoInterfaceObject]
        interface PowerTrainTorque : VehicleCommonDataType {
            readonly attribute short value;
        };
    
        [NoInterfaceObject]
        interface AcceleratorPedalPosition : VehicleCommonDataType {
            readonly attribute unsigned short value;
        };
    
        [NoInterfaceObject]
        interface ThrottlePosition : VehicleCommonDataType {
            readonly attribute unsigned short value;
        };
    
        [NoInterfaceObject]
        interface Trip {
            readonly attribute unsigned long   distance;
            readonly attribute unsigned short? averageSpeed;
            readonly attribute unsigned short? fuelConsumption;
        };
    
        [NoInterfaceObject]
        interface TripMeters : VehicleCommonDataType {
            readonly attribute Trip[] meters;
        };
    
        enum TransmissionMode {"park", "reverse", "neutral", "low", "drive", "overdrive"};
    
        [NoInterfaceObject]
        interface Transmission : VehicleCommonDataType {
            readonly attribute octet?            gear;
            readonly attribute TransmissionMode? mode;
        };
    
        [NoInterfaceObject]
        interface CruiseControlStatus : VehicleCommonDataType {
            readonly attribute boolean        status;
            readonly attribute unsigned short speed;
        };
    
        [NoInterfaceObject]
        interface LightStatus : VehicleCommonDataType {
                     attribute boolean  head;
                     attribute boolean  rightTurn;
                     attribute boolean  leftTurn;
                     attribute boolean  brake;
                     attribute boolean? fog;
                     attribute boolean  hazard;
                     attribute boolean  parking;
                     attribute boolean  highBeam;
                     attribute boolean? automaticHeadlights;
                     attribute boolean? dynamicHighBeam;
            readonly attribute Zone?    zone;
        };
    
        [NoInterfaceObject]
        interface InteriorLightStatus : VehicleCommonDataType {
                     attribute boolean status;
            readonly attribute Zone?   zone;
        };
    
        [NoInterfaceObject]
        interface Horn : VehicleCommonDataType {
            attribute boolean status;
        };
    
        [NoInterfaceObject]
        interface Chime : VehicleCommonDataType {
            readonly attribute boolean status;
        };
    
        [NoInterfaceObject]
        interface Fuel : VehicleCommonDataType {
            readonly attribute unsigned short? level;
            readonly attribute unsigned long?  range;
            readonly attribute unsigned long?  instantConsumption;
            attribute unsigned long?  averageConsumption;
            readonly attribute unsigned long?  fuelConsumedSinceRestart;
            readonly attribute unsigned long?  timeSinceRestart;
        };
    
        [NoInterfaceObject]
        interface EngineOil : VehicleCommonDataType {
            readonly attribute unsigned short level;
            readonly attribute unsigned short lifeRemaining;
            readonly attribute long           temperature;
            readonly attribute unsigned short pressure;
            readonly attribute boolean        change;
        };
    
        [NoInterfaceObject]
        interface Acceleration : VehicleCommonDataType {
            readonly attribute long x;
            readonly attribute long y;
            readonly attribute long z;
        };
    
        [NoInterfaceObject]
        interface EngineCoolant : VehicleCommonDataType {
            readonly attribute octet level;
            readonly attribute short temperature;
        };
    
        [NoInterfaceObject]
        interface SteeringWheel : VehicleCommonDataType {
            readonly attribute short angle;
        };
    
        [NoInterfaceObject]
        interface WheelTick : VehicleCommonDataType {
            readonly attribute unsigned long value;
            readonly attribute Zone?         zone;
        };
    
        [NoInterfaceObject]
        interface IgnitionTime : VehicleCommonDataType {
            readonly attribute DOMTimeStamp ignitionOnTime;
            readonly attribute DOMTimeStamp ignitionOffTime;
        };
    
        [NoInterfaceObject]
        interface YawRate : VehicleCommonDataType {
            readonly attribute short value;
        };
    
        [NoInterfaceObject]
        interface BrakeOperation : VehicleCommonDataType {
            readonly attribute boolean brakePedalDepressed;
        };
    
        enum Button {"home", "back", "search", "call", "end_call", "media_play", "media_next", "media_previous", "media_pause", "voice_recognize", "enter", "left", "right", "up", "down"};
    
        enum ButtonEventType {"press", "long_press", "release"};
    
         [NoInterfaceObject]
        interface VehicleButton : VehicleCommonDataType {
            readonly attribute Button          button;
            readonly attribute ButtonEventType       state;
        };
    
         [NoInterfaceObject]
        interface ButtonEvent : VehicleCommonDataType {
            readonly attribute VehicleButton[] button;
        };
    
        [NoInterfaceObject]
        interface DrivingMode : VehicleCommonDataType {
            readonly attribute boolean mode;
        };
    
        [NoInterfaceObject]
        interface NightMode : VehicleCommonDataType {
            readonly attribute boolean mode;
        };
    
        [NoInterfaceObject]
        interface Odometer : VehicleCommonDataType {
            readonly attribute unsigned long? distanceSinceStart;
            readonly attribute unsigned long  distanceTotal;
        };
    
        [NoInterfaceObject]
        interface TransmissionOil : VehicleCommonDataType {
            readonly attribute octet?  wear;
            readonly attribute short?  temperature;
        };
    
        [NoInterfaceObject]
        interface TransmissionClutch : VehicleCommonDataType {
            readonly attribute octet wear;
        };
    
        [NoInterfaceObject]
        interface BrakeMaintenance : VehicleCommonDataType {
            readonly attribute octet?        fluidLevel;
            readonly attribute boolean?        fluidLevelLow;
            readonly attribute octet?           padWear;
            readonly attribute boolean?        brakesWorn;
            readonly attribute Zone?           zone;
        };
    
        [NoInterfaceObject]
        interface WasherFluid : VehicleCommonDataType {
            readonly attribute unsigned short? level;
            readonly attribute boolean?        levelLow;
        };
    
        [NoInterfaceObject]
        interface MalfunctionIndicator : VehicleCommonDataType {
            readonly attribute boolean on;
        };
    
        [NoInterfaceObject]
        interface BatteryStatus : VehicleCommonDataType {
            readonly attribute unsigned short? chargeLevel;
            readonly attribute unsigned short? voltage;
            readonly attribute unsigned short? current;
            readonly attribute Zone? zone;
        };
    
        [NoInterfaceObject]
        interface Tire : VehicleCommonDataType {
            readonly attribute boolean?        pressureLow;
            readonly attribute unsigned short? pressure;
            readonly attribute short?          temperature;
            readonly attribute Zone?           zone;
        };
    
        [NoInterfaceObject]
        interface Diagnostic : VehicleCommonDataType {
            readonly attribute unsigned long accumulatedEngineRuntime;
            readonly attribute unsigned long distanceWithMILOn;
            readonly attribute unsigned long distanceSinceCodeCleared;
            readonly attribute unsigned long timeRunMILOn;
            readonly attribute unsigned long timeTroubleCodeClear;
        };
    
        [NoInterfaceObject]
        interface LanguageConfiguration : VehicleCommonDataType {
            attribute DOMString? language;
        };
    
        [NoInterfaceObject]
        interface UnitsOfMeasure : VehicleCommonDataType {
            attribute boolean?   isMKSSystem;
            attribute DOMString? unitsFuelVolume;
            attribute DOMString? unitsDistance;
            attribute DOMString? unitsSpeed;
            attribute DOMString? unitsFuelConsumption;
        };
    
        [NoInterfaceObject]
        interface Mirror : VehicleCommonDataType {
                     attribute unsigned short? mirrorTilt;
                     attribute unsigned short? mirrorPan;
            readonly attribute Zone?           zone;
        };
    
        [NoInterfaceObject]
        interface SeatAdjustment : VehicleCommonDataType {
                     attribute unsigned short? reclineSeatBack;
                     attribute unsigned short? seatSlide;
                     attribute unsigned short? seatCushionHeight;
                     attribute unsigned short? seatHeadrest;
                     attribute unsigned short? seatBackCushion;
                     attribute unsigned short? seatSideCushion;
            readonly attribute Zone?           zone;
        };
    
        enum DriveModeEnum {"comfort", "auto", "sport", "eco", "manual", "winter"};
    
        [NoInterfaceObject]
        interface DriveMode : VehicleCommonDataType {
            attribute DriveModeEnum? driveMode;
        };
    
        [NoInterfaceObject]
        interface DashboardIllumination : VehicleCommonDataType {
            attribute DOMString? dashboardIllumination;
        };
    
        [NoInterfaceObject]
        interface VehicleSound : VehicleCommonDataType {
            attribute boolean    activeNoiseControlMode;
            attribute DOMString? engineSoundEnhancementMode;
        };
    
        [NoInterfaceObject]
        interface AntilockBrakingSystem : VehicleCommonDataType {
            readonly attribute boolean enabled;
            readonly attribute boolean engaged;
        };
    
        [NoInterfaceObject]
        interface TractionControlSystem : VehicleCommonDataType {
            readonly attribute boolean enabled;
            readonly attribute boolean engaged;
        };
    
        [NoInterfaceObject]
        interface ElectronicStabilityControl : VehicleCommonDataType {
            readonly attribute boolean enabled;
            readonly attribute boolean engaged;
        };
    
        [NoInterfaceObject]
        interface TopSpeedLimit : VehicleCommonDataType {
        readonly attribute unsigned short speed;
            readonly attribute unsigned short speed;
        };
    
        [NoInterfaceObject]
        interface AirbagStatus : VehicleCommonDataType {
            readonly attribute boolean activated;
            readonly attribute boolean deployed;
            readonly attribute Zone?   zone;
        };
    
        enum DoorOpenStatus {"open", "ajar", "closed"};
    
        [NoInterfaceObject]
        interface Door : VehicleCommonDataType {
            readonly attribute DoorOpenStatus status;
                     attribute boolean        lock;
            readonly attribute Zone?          zone;
        };
    
        [NoInterfaceObject]
        interface ChildSafetyLock : VehicleCommonDataType {
                     attribute boolean lock;
            readonly attribute Zone?   zone;
        };
    
        enum OccupantStatus {"adult", "child", "vacant"};
    
        enum IdentificationType {"pin", "keyfob", "Bluetooth", "NFC", "fingerprint", "camera", "voice"};
    
        [NoInterfaceObject]
        interface Seat : VehicleCommonDataType {
            readonly attribute OccupantStatus     occupant;
            readonly attribute boolean            seatbelt;
            readonly attribute DOMString?         occupantName;
            readonly attribute IdentificationType identificationType;
            readonly attribute Zone?              zone;
        };
    
        [NoInterfaceObject]
        interface Temperature : VehicleCommonDataType {
            readonly attribute float interiorTemperature;
            readonly attribute float exteriorTemperature;
        };
    
        [NoInterfaceObject]
        interface RainSensor : VehicleCommonDataType {
            readonly attribute unsigned short rain;
            readonly attribute Zone?         zone;
        };
    
        [NoInterfaceObject]
        interface WiperStatus : VehicleCommonDataType {
            readonly attribute unsigned short wiperSpeed;
            readonly attribute Zone?         zone;
        };
    
        enum WiperControl {"off", "once", "slowest", "slow", "middle", "fast", "fastest", "auto"};
    
        [NoInterfaceObject]
        interface WiperSetting : VehicleCommonDataType {
                     attribute WiperControl wiperControl;
            readonly attribute Zone?        zone;
        };
    
        [NoInterfaceObject]
        interface Defrost : VehicleCommonDataType {
                     attribute boolean? defrostWindow;
                     attribute boolean? defrostMirrors;
            readonly attribute Zone?    zone;
        };
    
        [NoInterfaceObject]
        interface Sunroof : VehicleCommonDataType {
                     attribute unsigned short openness;
                     attribute unsigned short tilt;
            readonly attribute Zone?         zone;
        };
    
         enum ConvertibleRoofStatus {"closed", "closing", "opening", "opened"};
    
        [NoInterfaceObject]
        interface ConvertibleRoof : VehicleCommonDataType {
                     attribute ConvertibleRoofStatus status;
        };
    
        [NoInterfaceObject]
        interface SideWindow : VehicleCommonDataType {
                     attribute boolean? lock;
                     attribute unsigned short?    openness;
            readonly attribute Zone?             zone;
        };
    
        enum AirflowDirection {"frontpanel", "floorduct", "bilevel", "defrostfloor"};
    
        [NoInterfaceObject]
        interface ClimateControl : VehicleCommonDataType {
                     attribute AirflowDirection airflowDirection;
                     attribute unsigned short    fanSpeedLevel;
                     attribute short?            targetTemperature;
                     attribute boolean          airConditioning;
                     attribute boolean          heater;
                     attribute unsigned short?   seatHeater;
                     attribute unsigned short?   seatCooler;
                     attribute boolean          airRecirculation;
                     attribute unsigned short?   steeringWheelHeater;
            readonly attribute Zone?            zone;
        };
    
        [NoInterfaceObject]
        interface AtmosphericPressure : VehicleCommonDataType {
            readonly attribute unsigned short pressure;
        };
    
        enum LaneDepartureStatus {"off", "pause", "running"};
    
        [NoInterfaceObject]
        interface LaneDepartureDetection : VehicleCommonDataType {
            readonly attribute LaneDepartureStatus status;
        };
    
        enum AlarmStatus {"disarmed", "preArmed", "armed", "alarmed"};
    
        [NoInterfaceObject]
        interface Alarm : VehicleCommonDataType {
                     attribute AlarmStatus status;
        };
    
        enum ParkingBrakeStatus {"inactive", "active", "error"};
    
        [NoInterfaceObject]
        interface ParkingBrake : VehicleCommonDataType {
            readonly attribute ParkingBrakeStatus status;
        };
    
        [NoInterfaceObject]
        interface ParkingLights : VehicleCommonDataType {
            readonly attribute boolean status;
                     attribute boolean setting;
        };
    };