Abstract

This specification defines a standard for Vehicle Information API used to develop HTML5/JavaScript applications to run on in-vehicle infotainment systems and access resources of the vehicle. The API can also be used by HTML5/JavaScript applications running on mobile devices to access the resources of a connected vehicle. This specification does not dictate or describe the protocol or transport used for the connection. Data may come from numerous sources including OBD-II, CAN, LIN, etc. A typical use case of Vehicle Information might be the implementation of a 'virtual mechanic' application that provides vehicle status information such as tire pressure, engine oil level, washer fluid level, battery status, etc.

The specification promotes an API that allows for third party application development in a manner that is consistent across automakers. It is recognized, however, that the mechanisms required for access or control of vehicle properties may differ between automotive trim levels, models, and automakers. Furthermore, different automakers may expose different properties that can be read or set by an application. As a result, this specification shall allow for automaker-specific extensions or restrictions. Extensions are only permitted for interfaces that are not already described by this API, and must be implemented to conform with the existing API format and guidelines used in this specification. If a property is restricted, the automaker would omit the optional feature in their implementation (see the Availability Section).

The target platform supported by the specification is exclusively passenger vehicles. Use of this specification for non-passenger applications (transportation, heavy machinery, marine, airline infotainment, military, etc.)is not prohibited, but is not covered in the design or content of the API and therefore may be insufficient.

Status of This Document

This specification was published by the Automotive and Web Platform Business Group. It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Contributor License Agreement (CLA) there is a limited opt-out and other conditions apply. Learn more about W3C Community and Business Groups.

Table of Contents

1. 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.

An example of use is provided below:

Example 1
var vehicle = navigator.vehicle;

vehicle.vehicleSpeed.get().then(function(vehicleSpeed) {
  console.log("vehicle speed: " + vehicleSpeed.speed);
},
function(error) {
  console.log("There was an error");
});

var vehicleSpeedSub = vehicle.vehicleSpeed.subscribe(function(vehicleSpeed) {
  console.log("vehicle speed changed to: " + vehicleSpeed.speed);
  vehicle.vehicleSpeed.unsubscribe(vehicleSpeedSub);
});

var zone = new Zone;

var zones = vehicle.climateControl.zones;

for(var i in zones)
{
   if(i.equals(zone.driver))
   {
      var value = {};
      value["acStatus"] = true;
      vehicle.climateControl.set(value, zone.driver).then(function(){
        console.log("successfully set acStatus");
     },
     function(error) {
       console.log("there was an error");
     });
   }        
}        

2. 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.

Note

Possibly remove some of these and add terms we do use

Terminology

The EventHandler interface represents a callback used for event handlers as defined in [HTML5].

The concepts queue a task and fire a simple event are defined in [HTML5].

The terms event handler and event handler event types are defined in [HTML5].

3. Security and privacy considerations

This API MUST be only exposed to trusted content

Note

Needs to be flushed out. Tina & Vadim discussing a proposal to address this.

4. Basic Interfaces

The below basic interfaces are designed to allow basic access to vehicle data, determine what data is available and even change some of the data.

4.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.

Note

No data types here should be nullable and we need to add an attribute that returns a map or what the system capabilities are what is supported or not supported and why and a method to subscribe to capability changes

[NoInterfaceObject]
interface Vehicle {
};

4.3 Zone Interface

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

[NoInterfaceObject]
interface Zone {
    const DOMString Front = "Front";
    const DOMString Middle = "Middle";
    const DOMString Right = "Right";
    const DOMString Left = "Left";
    const DOMString Rear = "Rear";
    const DOMString Center = "Center";
                attribute DOMString[] value;
    readonly    attribute Zone        driver;
    readonly    attribute Zone        passenger;
    boolean equals (Zone zone);
    boolean contains (Zone zone);
};

4.3.1 Attributes

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

4.3.2 Methods

contains
MUST return true if zone.value can be found within this.value
ParameterTypeNullableOptionalDescription
zoneZone
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
zoneZone
Return type: boolean

4.3.3 Constants

Center of type DOMString
attribute DOMString[] value
Front of type DOMString
const DOMString Middle = "Middle"
Left of type DOMString
const DOMString Rear = "Rear"
Middle of type DOMString
const DOMString Right = "Right"
Rear of type DOMString
const DOMString Center = "Center"
Right of type DOMString
const DOMString Left = "Left"

4.4 VehicleInterfaceCallback Callback

The VehicleInterfaceCallback

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

4.5 VehicleInterfaceErrorCallback Callback

The VehicleInterfaceErrorCallback

Note

Define the types of possible errors

callback VehicleInterfaceErrorCallback = void(VehicleInterfaceError error); ();

4.6 AvailableCallback Callback

The AvailableCallback

callback AvailableCallback = void (Availability available) ();

4.7 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_deniedIndicates that the user does not have permission to perform the operation
invalid_operationIndicates that the operation is not valid. This can be because it isn't supported or has invalid arguments
timeoutOperation timed out. Timeout length depends upon the implementation
invalid_zoneIndicates the zone argument is not valid
unknownIndicates an error that is not known
[NoInterfaceObject]
interface VehicleInterfaceError {
    readonly    attribute VehicleError error;
    readonly    attribute DOMString    message;
};

4.7.1 Attributes

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

4.7.2 VehicleInterface Interface

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

[NoInterfaceObject]
interface VehicleInterface {
    Promise        get (optional Zone zone);
    Promise        set (object value, optional Zone zone);
    unsigned short subscribe (VehicleInterfaceCallback callback, optional Zone zone);
    void           unsubscribe (unsigned short handle);
    readonly    attribute Zone[] zones;
};
4.7.2.1 Attributes
zones of type array of Zone, readonly
MUST return all zones supported for this type.
4.7.2.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.
ParameterTypeNullableOptionalDescription
zoneZone
Return type: Promise
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
valueobject
zoneZone
Return type: Promise
subscribe
MUST return handle to subscription or 0 if error
ParameterTypeNullableOptionalDescription
callbackVehicleInterfaceCallback
zoneZone
Return type: unsigned short
unsubscribe
MUST return void. unsubscribes to value changes on this interface.
ParameterTypeNullableOptionalDescription
handleunsigned short
Return type: void
Example 2
vehicle.vehicleSpeed.get().then(resolve);

function resolve(data)
{
  //data is of type VehicleSpeed
  console.log("Speed: " + data.speed);
  console.log("Time Stamp: " + data.timestamp);
}
Example 3
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);
}

4.7.3 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",
    "not_supported_policy",
    "not_supported_other"
};
Enumeration description
availabledata is available
not_supportednot supported by this vehicle
not_supported_yetnot supported at this time, but may become supported later.
not_supported_securitynot supported because of security
not_supported_policynot supported because of system policy
not_supported_othernot supported for other reasons
partial interface VehicleInterface {
    Availability available ();
    readonly    attribute boolean supported;
    short        availabilityChangedListener (AvailableCallback callback);
    void         removeAvailabilityChangedListener (short handle);
};
4.7.3.1 Attributes
supported of type boolean, readonly
MUST return true if this attribute is supported and available
4.7.3.2 Methods
availabilityChangedListener
MUST return handle for listener.
ParameterTypeNullableOptionalDescription
callbackAvailableCallback
Return type: short
available
MUST return whether a not this attribute is available or not
No parameters.
Return type: Availability
removeAvailabilityChangedListener
ParameterTypeNullableOptionalDescription
handleshort
Return type: void
Example 4
if( ( var a = vehicle.vehicleSpeed.available() ) === "available" )
{
  // we can use it.
}
else
{
  // tell us why:
  console.log(a);
}
Example 5
var canHasVehicleSpeed = vehicle.vehicleSpeed.available() === "available";

vehicle.vehicle.availabilityChangedListener( function (available) {
  canHasVehicleSpeed = available === "available";
  checkVehicleSpeed();
});

function checkVehicleSpeed()
{
  if(canHasVehicleSpeed)
  {
    vehicle.vehicleSpeed.get().then(callback);
  }        
}

4.7.4 VehicleCommonDataType Interface

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

[NoInterfaceObject]
interface VehicleCommonDataType {
    readonly    attribute Zone?         zone;
    readonly    attribute DOMTimeStamp? timeStamp;
};
4.7.4.1 Attributes
timeStamp of type DOMTimeStamp, readonly , nullable
MUST return timestamp when this data was received on the system
zone of type Zone, readonly , nullable
MUST return zone for this data type or null if there is no zone associated with this data type

4.8 Configuration and Identification Interfaces

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 VehicleInterface identification;
    readonly    attribute VehicleInterface sizeConfiguration;
    readonly    attribute VehicleInterface fuelConfiguration;
    readonly    attribute VehicleInterface transmissionConfiguration;
    readonly    attribute VehicleInterface wheelConfiguration;
    readonly    attribute VehicleInterface steeringWheelConfiguration;
};

4.8.1 Attributes

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

4.8.2 Identification Interface

The Identification interface provides identification information about a vehicle.

[NoInterfaceObject]
interface Identification : VehicleCommonDataType {
    readonly    attribute DOMString ?      VIN;
    readonly    attribute DOMString ?      WMI;
    readonly    attribute DOMString[] ?    vehicleType;
    readonly    attribute DOMString ?      brand;
    readonly    attribute DOMString ?      model;
    readonly    attribute unsigned short ? year;
};
4.8.2.1 Attributes
VIN of type DOMString , readonly , nullable
the Vehicle Identification Number (ISO 3833)
WMI of type DOMString , readonly , nullable
the World Manufacture Identifier defined by SAE ISO 3780:2009. 3 characters.
brand of type DOMString , readonly , nullable
vehicle brand name
model of type DOMString , readonly , nullable
vehicle model type
vehicleType of type DOMString[] , readonly , nullable
readonly attribute DOMString ? brand
year of type unsigned short , readonly , nullable
vehicle model year (Min: 2000, Max: 2100)
Note
possibly use SAE/ISO to define types
Note

[VIN](Vehicle Identification Number) is composed of several information including WMI, model year etc., but varies depending on standard.
In order to make it easy to use for App developers, it is recommended to provide each values as a separate attributes.

4.8.3 SizeConfiguration Interface

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

[NoInterfaceObject]
interface SizeConfiguration : VehicleCommonDataType {
    readonly    attribute unsigned float ?   width;
    readonly    attribute unsigned float ?   height;
    readonly    attribute unsigned float ?   length;
    readonly    attribute unsigned short[] ? doorsCount;
    readonly    attribute unsigned short ?   totalDoors;
    readonly    attribute DOMString[]?       vehicleType;
};
4.8.3.1 Attributes
doorsCount of type unsigned short[] , readonly , nullable
list of car doors, organized in "rows" with number doors in each row.(Per Row - Min: 0, Max: 3)
Issue 1
NOTE TO EDITORS: DO NOT KNOW IF A LIST AS DESCRIBED CAN BE REPRESENTED IN WEBIDL MAY NEED TO REDO THIS.)For example, two door coupe would return {2}, four door sedan would return {2, 2}, four door SUV with hatchback would return {2, 2, 1}, etc.
Note
(Justin) Exact figures maybe used for DR, etc. In other cases, some Apps may need to draw the shape of the vehicle. If an App can't know the exact data from Identification (from pre-stored data), the app can draw the vehicle as similarly as possible by using both Door Count and Vehicle Types.
height of type unsigned float , readonly , nullable
Distance from the ground to the highest point of the vehicle (not including antennas) (Unit: Meters, Resolution: 0.01, Min: 0, Max: 10 Note: Number may be an approximation, and should not be expected to be exact.)
length of type unsigned float , readonly , nullable
Distance from front bumper to rear bumper (Unit: Meters, Resolution: 0.01, Min: 0, Max: 10 Note: Number may be an approximation, and should not be expected to be exact.)
totalDoors of type unsigned short , readonly , nullable
Total number of doors on the vehicle (all doors opening to the interior, including hatchbacks) (Min: 0, Max: 10)
vehicleType of type array of DOMString, readonly , nullable
Type of vehicle
Issue 3
Need enum of vehicle types?
Note
(Justin) It would be better to define some types... Plz refer.. href://http://en.wikipedia.org/wiki/Car_body_style
width of type unsigned float , readonly , nullable
Widest dimension of the vehicle (not including the side mirrors) (Unit: Meters, Resolution: 0.01, Min: 0, Max: 10 Note: Number may be an approximation, and should not be expected to be exact.)

4.8.4 FuelConfiguration Interface

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

Note

This is having trouble showing up

enum FuelTypeEnum {
    "gasoline",
    "methanol",
    "ethanol",
    "diesel",
    "lpg",
    "cng",
    "propane",
    "electric"
};
Enumeration description
gasolineTODO: define
methanolTODO: define
ethanolTODO: define
dieselTODO: define
lpgTODO: define
cngTODO: define
propaneTODO: define
electricTODO: define
enum RefuelPosition {
    "right",
    "left>"
};
Enumeration description
rightright side of vehicle referenced from driver position
left>left side of vehicle referenced from driver position
[NoInterfaceObject]
interface FuelConfiguration : VehicleCommonDataType {
    readonly    attribute FuelTypeEnum[] ? fuelType;
    readonly    attribute RefuelPostion ?  refuelPosition;
};
4.8.4.1 Attributes
fuelType of type FuelTypeEnum[] , readonly , nullable
type of fuel used by vehicle. If the vehicle uses multiple fuels, fuelType returns an array of fuel types.
refuelPosition of type RefuelPostion , readonly , nullable
Side of the vehicle with access to the fuel door

4.8.5 TransmissionConfiguration Interface

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

enum TransmissionGearTypeEnum {
    "auto",
    "manual",
    "cvt"
};
Enumeration description
autoTODO: define
manualTODO: define
cvtTODO: define
[NoInterfaceObject]
interface TransmissionConfiguration : VehicleCommonDataType {
    readonly    attribute TransmissionGearTypeEnum ? transmissionGearType;
};
4.8.5.1 Attributes
transmissionGearType of type TransmissionGearTypeEnum , readonly , nullable
Transmission gear type

4.8.6 WheelConfiguration Interface

The WheelConfiguration interface provides wheel configuration information about a vehicle.

[NoInterfaceObject]
interface WheelConfiguration : VehicleCommonDataType {
    readonly    attribute unsigned short ? wheelInfoRadius;
    readonly    attribute unsigned short ? frontWheelRadius;
    readonly    attribute unsigned short ? rearWheelRadius;
};
4.8.6.1 Attributes
frontWheelRadius of type unsigned short , readonly , nullable
Radius of the front wheel (Unit: centimeter, Min: 0, Max: 1000)
rearWheelRadius of type unsigned short , readonly , nullable
Radius of the rear wheel (Unit: centimeter, Min: 0, Max: 1000)
wheelInfoRadius of type unsigned short , readonly , nullable
Radius of the wheel (Unit: centimeter, Min: 0, Max: 1000)

4.8.7 SteeringWheelConfiguration Interface

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

[NoInterfaceObject]
interface SteeringWheelConfiguration : VehicleCommonDataType {
    readonly    attribute unsigned boolean? steeringWheelLeft;
};
4.8.7.1 Attributes
steeringWheelLeft of type unsigned boolean, readonly , nullable
True if steering wheel is on left side of vehicle

4.9 Running Status Interfaces

TODO:Definition Here

partial interface Vehicle {
    readonly    attribute VehicleInterface vehicleSpeed;
    readonly    attribute VehicleInterface engineSpeed;
    readonly    attribute VehicleInterface powerTrainTorque;
    readonly    attribute VehicleInterface acceleratorPedalPosition;
    readonly    attribute VehicleInterface throttlePosition;
    readonly    attribute VehicleInterface tripMeter;
    readonly    attribute VehicleInterface diagnostic;
    readonly    attribute VehicleInterface transmission;
    readonly    attribute VehicleInterface cruiseControlStatus;
    readonly    attribute VehicleInterface lightStatus;
    readonly    attribute VehicleInterface interiorLightStatus;
    readonly    attribute VehicleInterface chime;
    readonly    attribute VehicleInterface fuel;
    readonly    attribute VehicleInterface engineOil;
    readonly    attribute VehicleInterface acceleration;
    readonly    attribute VehicleInterface engineCoolant;
    readonly    attribute VehicleInterface deadReckoning;
};

4.9.1 Attributes

acceleration of type VehicleInterface, readonly
MUST return VehicleInterface for Acceleration
acceleratorPedalPosition of type VehicleInterface, readonly
MUST return VehicleInterface for AcceleratorPedalPosition
chime of type VehicleInterface, readonly
MUST return VehicleInterface for Chime
cruiseControlStatus of type VehicleInterface, readonly
MUST return VehicleInterface for CruiseControlStatus
deadReckoning of type VehicleInterface, readonly
MUST return VehicleInterface for DeadReckoning
diagnostic of type VehicleInterface, readonly
MUST return VehicleInterface for Diagnostic
engineCoolant of type VehicleInterface, readonly
MUST return VehicleInterface for EngineCoolant
engineOil of type VehicleInterface, readonly
MUST return VehicleInterface for EngineOil
engineSpeed of type VehicleInterface, readonly
MUST return VehicleInterface for EngineSpeed or undefined if not supported
fuel of type VehicleInterface, readonly
MUST return VehicleInterface for Fuel
interiorLightStatus of type VehicleInterface, readonly
MUST return VehicleInterface for InteriorLightStatus
lightStatus of type VehicleInterface, readonly
MUST return VehicleInterface for LightStatus
powerTrainTorque of type VehicleInterface, readonly
MUST return VehicleInterface for PowerTrainTorque
throttlePosition of type VehicleInterface, readonly
MUST return VehicleInterface for ThrottlePosition
transmission of type VehicleInterface, readonly
MUST return VehicleInterface for Transmission
tripMeter of type VehicleInterface, readonly
MUST return VehicleInterface for TripMeter
vehicleSpeed of type VehicleInterface, readonly
MUST return VehicleInterface for VehicleSpeed

4.9.2 VehicleSpeed Interface

The VehicleSpeed represents vehicle speed interface

[NoInterfaceObject]
interface VehicleSpeed : VehicleCommonDataType {
    readonly    attribute unsigned short speed;
};
4.9.2.1 Attributes
speed of type unsigned short, readonly
MUST return vehicle speed in k/h

4.9.3 EngineSpeed Interface

The EngineSpeed represents engine speed interface

[NoInterfaceObject]
interface EngineSpeed : VehicleCommonDataType {
    readonly    attribute unsigned short speed;
};
4.9.3.1 Attributes
speed of type unsigned short, readonly
MUST return engine speed in rotations per minute. Range: 0-100,000

4.9.4 VehiclePowerModeType Interface

The VehiclePowerModeType represents position of the ignition switch

enum VehiclePowerMode {
    "off",
    "accessory1",
    "accessory2",
    "running"
};
Enumeration description
offTODO: define
accessory1TODO: define
accessory2TODO: define
runningTODO: define
[NoInterfaceObject]
interface VehiclePowerModeType : VehicleCommonDataType {
    readonly    attribute VehiclePowerMode value;
};
4.9.4.1 Attributes
value of type VehiclePowerMode, readonly
postion of the ignition switch

4.9.5 PowerTrainTorque Interface

The PowerTrainTorque represents position of the ignition switch

[NoInterfaceObject]
interface PowerTrainTorque : VehicleCommonDataType {
    readonly    attribute unsigned short value;
};
4.9.5.1 Attributes
value of type unsigned short, readonly
Powertrain torque
Units: Newton meters; Range: 0 - 10,000,000

4.9.6 AcceleratorPedalPosition Interface

The AcceleratorPedalPosition represents the accelerator pedal position

[NoInterfaceObject]
interface AcceleratorPedalPosition : VehicleCommonDataType {
    readonly    attribute unsigned short value;
};
4.9.6.1 Attributes
value of type unsigned short, readonly
Accelerator pedal position as a percentage (0%: released pedal, 100%: fully depressed)

4.9.7 ThrottlePosition Interface

The ThrottlePosition represents position of the throttle

[NoInterfaceObject]
interface ThrottlePosition : VehicleCommonDataType {
    readonly    attribute unsigned short value;
};
4.9.7.1 Attributes
value of type unsigned short, readonly
Throttle position as a percentage (0%: closed, 100%: fully open)

4.9.8 TripMeter Interface

The TripMeter represents trip meter

[NoInterfaceObject]
interface TripMeter : VehicleCommonDataType {
    readonly    attribute unsigned short   distance;
    readonly    attribute unsigned short ? averageSpeed;
    readonly    attribute unsigned short ? fuelConsumption;
};
4.9.8.1 Attributes
averageSpeed of type unsigned short , readonly , nullable
Average speed based on trip meter. Units: km/h; Range: 0 - 1000
distance of type unsigned short, readonly
Distance travelled based on trip meter. Units: km; Range: 0 - 100,000,000
fuelConsumption of type unsigned short , readonly , nullable
Fuel consumed based on trip meter. Units: l/100km; 0.0 - 100.0

4.9.9 Diagnostic Interface

The Diagnostic represents Diagnostic interface to malfunction indicator light information

[NoInterfaceObject]
interface Diagnostic : VehicleCommonDataType {
    readonly    attribute unsigned short accumulatedEngineRuntime;
    readonly    attribute unsigned short distanceWithMILOn;
    readonly    attribute unsigned short distanceSinceCodeCleared.;
    readonly    attribute unsigned short timeRunMILOn;
    readonly    attribute unsigned short timeTroubleCodeClear;
};
4.9.9.1 Attributes
accumulatedEngineRuntime of type unsigned short, readonly
engine runtime in hours. Range 0 - 1,000,000
distanceSinceCodeCleared. of type unsigned short, readonly
Distance travelled since the codes were last cleared. Units km. Range: 0 - 100,000,000
distanceWithMILOn of type unsigned short, readonly
distance travelled with the malfunction indicator light on. Units km. Range: 0 - 100,000,000
timeRunMILOn of type unsigned short, readonly
Time run with the malfunction indicator light on. Units: minutes. Range 0 - 100,000,000
timeTroubleCodeClear of type unsigned short, readonly
Time since the trouble codes were last cleared. Units: minutes. Range 0 - 100,000,000

4.9.10 Transmission Interface

The Transmission interface represents the current transmission gear and mode.

enum TransmissionMode {
    "park",
    "reverse",
    "neutral",
    "drive"
};
Enumeration description
parkTODO: define
reverseTODO: define
neutralTODO: define
driveTODO: define
[NoInterfaceObject]
interface Transmission : VehicleCommonDataType {
    readonly    attribute octet ?            gear;
    readonly    attribute TransmissionMode ? mode;
};
4.9.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)

4.9.11 CruiseControlStatus Interface

The CruiseControlStatus interface represents cruise control settings.

[NoInterfaceObject]
interface CruiseControlStatus : VehicleCommonDataType {
    readonly    attribute boolean        status;
    readonly    attribute unsigned short Speed;
};
4.9.11.1 Attributes
Speed of type unsigned short, readonly
MUST return target Cruise Control speed in kilometers per hour (km/h). Range: 0 - 1000;
status of type boolean, readonly
MUST return whether or not the Cruise Control system is on (true) or off (false)

4.9.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;
};
4.9.12.1 Attributes
automaticHeadlights of type boolean, , nullable
MUST return whether automatic head lights are 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 is 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)

4.9.13 InteriorLightStatus Interface

The InteriorLightStatus interface represents interior light status.

[NoInterfaceObject]
interface InteriorLightStatus : VehicleCommonDataType {
                attribute boolean status;
};
4.9.13.1 Attributes
status of type boolean,
MUST return passenger interior light status for the given zone: on (true), off (false)

4.9.14 Horn Interface

The Horn interface represents horn status.

[NoInterfaceObject]
interface Horn : VehicleCommonDataType {
                attribute boolean status;
};
4.9.14.1 Attributes
status of type boolean,
MUST return Horn status: On (true) or off (false)

4.9.15 Chime Interface

The Chime interface represents horn status.

[NoInterfaceObject]
interface Chime : VehicleCommonDataType {
    readonly    attribute boolean status;
};
4.9.15.1 Attributes
status of type boolean, readonly
MUST return Chime status when a door is open: On (true) or off (false)

4.9.16 Fuel Interface

The Fuel interface represents vehicle fuel status.

[NoInterfaceObject]
interface Fuel : VehicleCommonDataType {
    readonly    attribute unsigned short level;
    readonly    attribute unsigned short range;
    readonly    attribute unsigned short instantConsumption;
    readonly    attribute unsigned short averageConsumption;
    readonly    attribute unsigned short fuelConsumedSinceRestart;
    readonly    attribute unsigned short vehicleTimeSinceRestart;
};
4.9.16.1 Attributes
averageConsumption of type unsigned short, readonly
MUST return average fuel consumption in per distance travelled (l/100km). Setting this to any value should reset the counter to '0'
fuelConsumedSinceRestart of type unsigned short, readonly
MUST return fuel consumed (l) since engine start; resets to 0 each restart
instantConsumption of type unsigned short, readonly
MUST return instant fuel consumption in per distance travelled (l/100km)
level of type unsigned short, readonly
MUST return fuel level as a percentage of fullness
range of type unsigned short, readonly
MUST return estimated fuel range in kilometers
vehicleTimeSinceRestart of type unsigned short, readonly
MUST return time (min) elapsed since vehicle restart. Range 0 - 100,000,000

4.9.17 EngineOil Interface

The EngineOil interface represents engine oil status.

[NoInterfaceObject]
interface EngineOil : VehicleCommonDataType {
    readonly    attribute unsigned short remaining;
    readonly    attribute long           temperature;
    readonly    attribute unsigned short pressure;
    readonly    attribute boolean        change;
};
4.9.17.1 Attributes
change of type boolean, readonly
MUST return engine oil change indicator status
pressure of type unsigned short, readonly
MUST return Engine Oil Pressure in kPa
remaining of type unsigned short, readonly
MUST return remaining engine oil as percentage of fullness
temperature of type long, readonly
MUST return Engine Oil Temperature in Celcius

4.9.18 Acceleration Interface

The Acceleration interface represents vehicle acceleration.

[NoInterfaceObject]
interface Acceleration : VehicleCommonDataType {
    readonly    attribute unsigned long x;
    readonly    attribute unsigned long y;
    readonly    attribute unsigned long z;
};
4.9.18.1 Attributes
x of type unsigned long, readonly
MUST return acceleration on the "X" axis as 1/1000 G (gravitational force).
y of type unsigned long, readonly
MUST return acceleration on the "Y" axis as 1/1000 G (gravitational force).
z of type unsigned long, readonly
MUST return acceleration on the "Z" axis as 1/1000 G (gravitational force).

4.9.19 EngineCoolant Interface

The EngineCoolant represents

[NoInterfaceObject]
interface EngineCoolant : VehicleCommonDataType {
    readonly    attribute unsigned short level;
    readonly    attribute unsigned short temperature;
};
4.9.19.1 Attributes
level of type unsigned short, readonly
MUST return engine coolant level as percentage of fullness
temperature of type unsigned short, readonly
MUST return engine coolant temperature in Celcius

4.9.20 DeadReckoning Interface

The DeadReckoning represents signals related to Dead Reckoning calculation

[NoInterfaceObject]
interface DeadReckoning : VehicleCommonDataType {
    readonly    attribute short          steeringWheelAngle;
    readonly    attribute unsigned short wheelTickSensor;
};
4.9.20.1 Attributes
steeringWheelAngle of type short, readonly
MUST return angle of steering wheel off centerline. Range: -180 - 180
wheelTickSensor of type unsigned short, readonly
MUST return left/right wheel rotation counter. Range: 0 - 1,000,000

4.10 Maintenance Interfaces

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 VehicleInterface odometer;
    readonly    attribute VehicleInterface transmissionOil;
    readonly    attribute VehicleInterface transmissionClutch;
    readonly    attribute VehicleInterface brake;
    readonly    attribute VehicleInterface washerFluid;
    readonly    attribute VehicleInterface malfunctionIndicator;
    readonly    attribute VehicleInterface batteryStatus;
    readonly    attribute VehicleInterface tire;
};

4.10.1 Attributes

batteryStatus of type VehicleInterface, readonly
MUST return VehicleInterface for BatteryStatus
brake of type VehicleInterface, readonly
MUST return VehicleInterface for Brake
malfunctionIndicator of type VehicleInterface, readonly
MUST return VehicleInterface for MalfunctionIndicator
odometer of type VehicleInterface, readonly
MUST return VehicleInterface for Odometer or undefined if not supported
tire of type VehicleInterface, readonly
MUST return VehicleInterface for Tire
transmissionClutch of type VehicleInterface, readonly
MUST return VehicleInterface for TransmissionClutch
transmissionOil of type VehicleInterface, readonly
MUST return VehicleInterface for TransmissionOil
washerFluid of type VehicleInterface, readonly
MUST return VehicleInterface for WasherFluid

4.10.2 Odometer Interface

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

[NoInterfaceObject]
interface Odometer : VehicleCommonDataType {
    readonly    attribute unsigned short ? distanceSinceStart;
    readonly    attribute unsigned long    distanceTotal;
};
4.10.2.1 Attributes
distanceSinceStart of type unsigned short , readonly , nullable
the distance traveled by vehicle since start (Unit: kilometer, Resolution: 0.1, Min: 0, Max: 6553.5).
Available Zone: None
distanceTotal of type unsigned long, readonly
the total distance traveled by the vehicle (Unit: kilometer, Resolution: 0.1, Min: 0, Max: 429496729.5).
Available Zone: None

4.10.3 TransmissionOil Interface

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

[NoInterfaceObject]
interface TransmissionOil : VehicleCommonDataType {
    readonly    attribute byte?   wear;
    readonly    attribute short ? temperature;
};
4.10.3.1 Attributes
temperature of type short , readonly , nullable
current temperature of the transmission oil(Unit: Celsius, Resolution: 1, Min: -40, Max: 215).
Available Zone: None
wear of type byte, readonly , nullable
transmission oil wear (Unit: percentage, Resolution: 1, Min: 0, Max: 100, 0: no wear, 100: completely worn).
Available Zone: None

4.10.4 TransmissionClutch Interface

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

[NoInterfaceObject]
interface TransmissionClutch : VehicleCommonDataType {
    readonly    attribute byte wear;
};
4.10.4.1 Attributes
wear of type byte, readonly
transmission clutch wear (Unit: percentage, Resolution: 1, Min: 0, Max: 100, 0: no wear, 100: completely worn).
Available Zone: None

4.10.5 Brake Interface

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

[NoInterfaceObject]
interface Brake : VehicleCommonDataType {
    readonly    attribute unsigned short ? fluidLevel;
    readonly    attribute boolean?         fluidLevelLow;
    readonly    attribute byte?            padWear;
    readonly    attribute boolean?         brakesWorn;
};
4.10.5.1 Attributes
brakesWorn of type boolean, readonly , nullable
true if brakes are worn, false otherwise.
Available Zone: None
fluidLevel of type unsigned short , readonly , nullable
brake fluid level (Unit: percentage, Resolution: 1, Min: 0, Max: 100, 0: empty, 100: full).
Available Zone: None
fluidLevelLow of type boolean, readonly , nullable
true if brake fluid level is low, false otherwise.
Available Zone: None
padWear of type byte, readonly , nullable
front left brake pad wear (Unit: percentage, Resolution: 1, Min: 0, Max: 100, 0: no wear, 100: completely worn).
Available Zone: Front, Rear, Left, Right

4.10.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;
};
4.10.6.1 Attributes
level of type unsigned short , readonly , nullable
brake fluid level (Unit: percentage, Resolution: 1, Min: 0, Max: 100, 0: empty, 100: full).
Available Zone: None
levelLow of type boolean, readonly , nullable
true if washer fluid level is low, false otherwise.
Available Zone: None

4.10.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;
};
4.10.7.1 Attributes
on of type boolean, readonly
true if malfunction indicator lamp is on, false otherwise.
Available Zone: None

4.10.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;
};
4.10.8.1 Attributes
chargeLevel of type unsigned short , readonly , nullable
battery charge level (Unit: percentage, Resolution: 1, Min: 0, Max: 100, 0: empty, 100: full).
Available Zone: None
current of type unsigned short , readonly , nullable
battery current (Unit: Amperes, Resolution: 1, Min: 0, Max: 255).
Available Zone: None
voltage of type unsigned short , readonly , nullable
battery voltage (Unit: Volts, Resolution: 0.1, Min: 0, Max: 25.2).
Available Zone: None

4.10.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 boolean?         pressureLow;
    readonly    attribute short ?          temperature;
};
4.10.9.1 Attributes
pressure of type unsigned short , readonly , nullable
tire pressure (Unit: kilopascal, Resolution: 3, Min: 0, Max: 765).
pressureLow of type boolean, readonly , nullable
true if any tire pressure is low, false otherwise.
pressureLow of type boolean, readonly , nullable
true if a tire pressure is low, false otherwise.
temperature of type short , readonly , nullable
tire temperature (Unit: Celsius, Resolution: 1, Min: -40, Max: 215).

4.11 Personalization Interfaces

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

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

4.11.1 Attributes

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

4.11.2 DriverIdentification Interface

The DriverIdentification interface provides driver identification information about a vehicle.

[NoInterfaceObject]
interface DriverIdentification : VehicleCommonDataType {
    readonly    attribute DOMString ? keyFobID;
    readonly    attribute DOMString ? driverID;
};
4.11.2.1 Attributes
driverID of type DOMString , readonly , nullable
Driver identifier that controls personalization settings
Issue 5
(same as KeyFob unless vehicle has alternative driver selection method)
keyFobID of type DOMString , readonly , nullable
Key fob identifier used to select personalization settings
Issue 4
As the key fob identifier is likely to be used to identify personalization settings, what do we need to do to to add a method to make use of this?

4.11.3 LanguageConfiguration Interface

The LanguageConfiguration interface provides language information about a vehicle.

[NoInterfaceObject]
interface LanguageConfiguration : VehicleCommonDataType {
                attribute unsigned float ? language;
};
4.11.3.1 Attributes
language of type unsigned float , , nullable
Language identifier based on two-letter codes as specified in ISO 639-1
Issue 6
Should make enum out of ISO 639-1?
Note
(Justin) It seems to be provided at system level. It looks not vehicle-specific attribute

4.11.4 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;
};
4.11.4.1 Attributes
isMKSSystem of type boolean , , nullable
measurement system currently being used by vehicle. 'true' means the current measurement system is MKS-km(litter). 'false' means it is US customary units-mile(gallon).
unitsDistance of type DOMString , , nullable
Distance unit of measurement. The value is one of both "km" and "mile".
unitsFuelConsumption of type DOMString , , nullable
Fuel consumption unit of measurement. The value is one of following values: "l/100", "mpg", "km/l".
unitsFuelVolume of type DOMString, , nullable
Fuel unit of measurement. The value is one of both "litter" and "gallon".
unitsSpeed of type DOMString , , nullable
Speed unit of measurement. The value is one of both "km/h" and "mph".

4.11.5 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;
};
4.11.5.1 Attributes
mirrorPan of type unsigned short , , nullable
Mirror pan position in percentage distance travelled, from left to right position (Unit: percentage, Resolution: 1, Min: -100, Max: 100, 0 represents center position)
Available Zone: Left, Right, Center
mirrorTilt of type unsigned short , , nullable
Mirror tilt position in percentage distance travelled, from downward-facing to upward-facing position (Unit: percentage, Resolution: 1, Min: -100, Max: 100, 0 represents center position)
Available Zone: Left, Right, Center

4.11.6 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;
};
4.11.6.1 Attributes
reclineSeatBack of type unsigned short , , nullable
Seat back recline position as percent to completely reclined (Unit: percentage, Resolution: 1, Min: -100, Max: 100, center 0 represents the seatback upright at a 90 degree angle)
Available Zone: Front, Middle, Rear, Left, Right, Center
seatBackCushion of type unsigned short , , nullable
Back cushion position as a percentage of lumbar curvature (Unit: percentage, Resolution: 1, Min: 0, Max: 100, 0 represents flat, and 100 is maximum curvature)
Available Zone: Front, Middle, Rear, Left, Right, Center
seatCushionHeight of type unsigned short , , nullable
Seat cushion height position as a percentage of upward distance travelled (Unit: percentage, Resolution: 1, Min: 0, Max: 100, 0 represents the lowest seat position)
Available Zone: Front, Middle, Rear, Left, Right, Center
seatHeadrest of type unsigned short , , nullable
Headrest position as a percentage of upward distance travelled (Unit: percentage, Resolution: 1, Min: 0, Max: 100, 0 represents the lowest headrest position)
Available Zone: Front, Middle, Rear, Left, Right, Center
seatSideCushion of type unsigned short , , nullable
Sides of back cushion position as a percentage of curvature (Unit: percentage, Resolution: 1, Min: 0, Max: 100, 0 represents flat, and 100 is maximum curvature)
Available Zone: Front, Middle, Rear, Left, Right, Center
seatSlide of type unsigned short , , nullable
Seat slide position as percentage of distance travelled away from forwardmost position (Unit: percentage, Resolution: 1, Min: 0, Max: 100, 0 represents seat position farthest forward)
Available Zone: Front, Middle, Rear, Left, Right, Center

4.11.7 SteeringWheel Interface

The SteeringWheel interface provides or sets information about steering wheel in vehicle.

[NoInterfaceObject]
interface SteeringWheel : VehicleCommonDataType {
                attribute unsigned short ? steeringWheelTelescopingPosition;
                attribute unsigned short ? steeringWheelPositionTilt;
};
4.11.7.1 Attributes
steeringWheelPositionTilt of type unsigned short , , nullable
Steering wheel position as percentage of tilt (Unit: percentage, Resolution: 1, Min: 0, Max: 100, 0 represents steering wheel tilted lowest downward-facing position)
steeringWheelTelescopingPosition of type unsigned short , , nullable
Steering wheel position as percentage of extension from the dash (Unit: percentage, Resolution: 1, Min: 0, Max: 100, 0 represents steering wheel positioned closest to dash)

4.11.8 DriveMode Interface

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

enum DriveModeEnum {
    "comfort",
    "auto",
    "sport",
    "eco",
    "manual"
};
Enumeration description
comfortTODO: define
autoTODO: define
sportTODO: define
ecoTODO: define
manualTODO: define
[NoInterfaceObject]
interface DriveMode : VehicleCommonDataType {
                attribute DriveModeEnum ? driveMode;
};
4.11.8.1 Attributes
driveMode of type DriveModeEnum , , nullable
Vehicle driving mode

4.11.9 DashboardIllumination Interface

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

[NoInterfaceObject]
interface DashboardIllumination : VehicleCommonDataType {
                attribute DOMString ? dashboardIllumination;
};
4.11.9.1 Attributes
dashboardIllumination of type DOMString , , nullable
Illumination of dashboard as a percentage (Unit: percentage, Resolution: 1, Min: 0, Max: 100, 0 represents none and 100 maximum illumination)

4.11.10 VehicleSound Interface

The VehicleSound interface provides or sets information about vehicle sound.

[NoInterfaceObject]
interface VehicleSound : VehicleCommonDataType {
                attribute boolean     activeNoiseControlMode;
                attribute DOMString ? engineSoundEnhancementMode;
};
4.11.10.1 Attributes
activeNoiseControlMode of type boolean,
Active noise control status (False: not-activated, True: activated)
engineSoundEnhancementMode of type DOMString , , nullable
Engine sound enhancement mode where a null string means not-activated, and any other value represents a manufacture specific setting

4.12 DrivingSafety Interfaces

TODO:Definition Here

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

4.12.1 Attributes

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

4.12.2 AntilockBrakingSystem Interface

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

[NoInterfaceObject]
interface AntilockBrakingSystem : VehicleCommonDataType {
    readonly    attribute boolean enabled;
    readonly    attribute boolean engaged;
};
4.12.2.1 Attributes
enabled of type boolean, readonly
MUST return whether or not the ABS Setting is enabled (true) or disabled (false)
engaged of type boolean, readonly
MUST return whether or not the ABS is engaged (true) or idle (false)

4.12.3 TractionControlSystem Interface

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

[NoInterfaceObject]
interface TractionControlSystem : VehicleCommonDataType {
    readonly    attribute boolean enabled;
    readonly    attribute boolean engaged;
};
4.12.3.1 Attributes
enabled of type boolean, readonly
MUST return whether or not the TCS Setting is enabled (true) or disabled (false)
engaged of type boolean, readonly
MUST return whether or not the TCS is engaged (true) or idle (false)

4.12.4 ElectronicStabilityControl Interface

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

[NoInterfaceObject]
interface ElectronicStabilityControl : VehicleCommonDataType {
    readonly    attribute boolean enabled;
    readonly    attribute boolean engaged;
};
4.12.4.1 Attributes
enabled of type boolean, readonly
MUST return whether or not the ESC Setting is enabled (true) or disabled (false)
engaged of type boolean, readonly
MUST return whether or not the ESC is engaged (true) or idle (false)

4.12.5 TopSpeedLimit Interface

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

[NoInterfaceObject]
interface TopSpeedLimit : VehicleCommonDataType {
    readonly    attribute unsigned short speed;
};
4.12.5.1 Attributes
speed of type unsigned short, readonly
MUST return vehicle top speed limit in k/h

4.12.6 AirbagStatus Interface

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

[NoInterfaceObject]
interface AirbagStatus : VehicleCommonDataType {
    readonly    attribute boolean activated;
    readonly    attribute boolean deployed;
};
4.12.6.1 Attributes
activated of type boolean, readonly
MUST return whether or not the airbag is activated (true) or deactivated (false)
deployed of type boolean, readonly
MUST return whether the airbag is deployed (true) or not (false)

Available Zone: Driver, Passenger, Front, Rear, Middle, Left, Right

4.12.7 Door Interface

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

enum DoorOpenStatus {
    "open",
    "ajar",
    "close"
};
Enumeration description
openDoor is opened
ajarDoor is ajar
closeDoor is closed
[NoInterfaceObject]
interface Door : VehicleCommonDataType {
    readonly    attribute DoorOpenStatus status;
                attribute boolean        lock;
};
4.12.7.1 Attributes
lock of type boolean,
MUST return whether or not the door is locked (true) or unlocked (false)
status of type DoorOpenStatus, readonly
MUST return the status of door's open status

Available Zone: Driver, Passenger, Front, Rear, Middle, Left, Right, Fuel(Fuel Fliter Cap), Hood, Trunk

4.12.8 ChildSafetyLock Interface

The ChildSafetyLock provides the current setting of Child Safety Lock

[NoInterfaceObject]
interface ChildSafetyLock : VehicleCommonDataType {
                attribute boolean lock;
};
4.12.8.1 Attributes
lock of type boolean,
MUST return whether or not the Child Safety Lock is locked (true) or unlocked (false)

4.12.9 Seat Interface

The Seat provides the current occupant and seatbelt status of a seat in each zones of the vehicle

enum OccupantStatus {
    "adult",
    "child",
    "vacant"
};
Enumeration description
adultoccupant is an adult
childoccupant is a child
vacantseat is vacant
[NoInterfaceObject]
interface Seat : VehicleCommonDataType {
    readonly    attribute OccupantStatus occupant;
    readonly    attribute boolean        seatbelt;
};
4.12.9.1 Attributes
occupant of type OccupantStatus, readonly
MUST return the status of seat occupant
seatbelt of type boolean, readonly
MUST return whether or not the seat belt is fasten (true) or unfasten (false)

Available Zone: Driver, Passenger, Front, Rear, Middle, Left, Right, Center

4.13 Climate Interfaces

TODO:Definition Here

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

4.13.1 Attributes

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

4.13.2 Temperature Interface

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

[NoInterfaceObject]
interface Temperature : VehicleCommonDataType {
    readonly    attribute short interiorTemperature;
    readonly    attribute short exteriorTemperature;
};
4.13.2.1 Attributes
exteriorTemperature of type short, readonly
the current temperature of the air around the vehicle
interiorTemperature of type short, readonly
the current temperature of the air inside of the vehicle.

Unit is deg. of Celsius
Resolution is 0.5
Range is -70 to 125
This interface is optional

Note

There's relevant exploratory work in W3C.
https://dvcs.w3.org/hg/dap/raw-file/default/temperature/Overview.html
However, interior or exterior temperature MUST be distinguished in vehicles.

4.13.3 RainSensor Interface

The RainSensor interface provides information about ambient light levels.

[NoInterfaceObject]
interface RainSensor : VehicleCommonDataType {
    readonly    attribute unsigned byte rain;
};
4.13.3.1 Attributes
rain of type unsigned byte, readonly
the amount of rain detected by the rain sensor. level of rain intensity ( 0: No Rain ~ 10: Heaviest Rain)

4.13.4 WiperStatus Interface

The WiperStatus interface represents the status of wiper operation.

[NoInterfaceObject]
interface WiperStatus : VehicleCommonDataType {
    readonly    attribute unsigned byte  frontWiperSpeed;
    readonly    attribute unsigned byte? rearWiperSpeed;
};
4.13.4.1 Attributes
frontWiperSpeed of type unsigned byte, readonly
current speed interval of wiping windshield ( 0: off, 1: Slowest ~ 10: Fastest )
rearWiperSpeed of type unsigned byte, readonly , nullable
current speed interval of wiping rear window ( 0: off, 1: Slowest ~ 10: Fastest )

rearWiperSpeed is optional depending on vehicle type.

4.13.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
offWiper is not in operation
onceWipe single. It's a transient state and goes to the off mode
slowestWiper is on mode with the slowest speed
slowWiper is on mode with slow speed
middleWiper is on mode with middle speed
fastWiper is on mode with fast speed
fastestWiper is on mode with the fastest speed
autoWiper is on the automatic mode which controls wiping speed with accordance with the amount of rain
[NoInterfaceObject]
interface WiperSetting : VehicleCommonDataType {
                attribute WiperControl  frontWiperControl;
                attribute WiperControl? rearWiperControl;
};
4.13.5.1 Attributes
frontWiperControl of type WiperControl,
current setting of the front wiper controller. It can be used to send user's request for changing setting.
rearWiperControl of type WiperControl, , nullable
current setting of the rear wiper controller. It can be used to send user's request for changing setting.

rearWiperControl is optional depending on vehicle type.

4.13.6 Defrost Interface

The Defrost interface represents the status of wiper operation.

[NoInterfaceObject]
interface Defrost : VehicleCommonDataType {
                attribute boolean  defrostWindShield;
                attribute boolean? defrostRearWindow;
                attribute boolean? defrostSideMirrors;
};
4.13.6.1 Attributes
defrostRearWindow of type boolean, , nullable
current status of the defrost switch for rear window. It can be used to send user's request for changing setting.
defrostSideMirrors of type boolean, , nullable
current status of the defrost switch for side mirrors. It can be used to send user's request for changing setting.
defrostWindShield of type boolean,
current status of the defrost switch for WindShield. It can be used to send user's request for changing setting.

defrostRearWindow, defrostSideMirrors are optional depending on vehicle type.

4.13.7 Sunroof Interface

The Sunroof interface represents the current status of Sunroof.

[NoInterfaceObject]
interface Sunroof : VehicleCommonDataType {
                attribute unsigned byte openness;
                attribute unsigned byte tilt;
};
4.13.7.1 Attributes
openness of type unsigned byte,
current status of Sunroof as a percentage of openness ( 0: Closed, 100: Fully Opened).
tilt of type unsigned byte,
current status of Sunroof as a percentage of tilted ( 0: Closed, 100: Maximum Tilted).

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

4.13.8 ConvertibleRoof Interface

The ConvertibleRoof interface represents the current status of Convertible Roof.

enum ConvertibleRoofStatus {
    "closed",
    "closing",
    "opening",
    "opened"
};
Enumeration description
closedThe convertible roof is closed
closingThe convertible roof is closing
openingThe convertible roof is opening
openedThe convertible roof is opened
[NoInterfaceObject]
interface ConvertibleRoof : VehicleCommonDataType {
                attribute ConvertibleRoofStatus status;
};
4.13.8.1 Attributes
status of type ConvertibleRoofStatus,
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.

4.13.9 SideWindow Interface

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

[NoInterfaceObject]
interface SideWindow : VehicleCommonDataType {
                attribute unsigned boolean? lock;
                attribute unsigned byte?    openness;
};
4.13.9.1 Attributes
lock of type unsigned boolean, , nullable
MUST return whether or not the window is locked (true) or unlocked (false)
openness of type unsigned byte, , nullable
current status of the side window as a percentage of openness. (0:Closed, 100:Fully Opened)

Available Zone: Front, Rear, Left, Right
It can be used to send user's request for changing setting.

4.13.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
frontpanelAir flow is directed to the instrument panel outlets
floorductAir flow is directed to the floor outlets
bilevelAir flow is directed to the instrument panel outlets and the floor outlets
defrostfloorAir 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;
};
4.13.10.1 Attributes
airConditioning of type boolean,
current status of the air conditioning system (true: on, false: off)
airRecirculation of type boolean,
current setting of air recirculation. (true : on, false : pulling in outside air).
Available Zone: None
airflowDirection of type AirflowDirection,
current status of the direction of the air flow through the ventilation system
fanSpeedLevel of type unsigned byte,
current status of the fan speed of the air flowing ( 0: off, 1: weakest ~ 10: strongest )
heater of type boolean,
current status of the heating system (true: on, false: off)
seatCooler of type unsigned byte, , nullable
current status of the seat ventilation ( 0: off, 1: least warm ~ 10: warmest )
seatHeater of type unsigned byte, , nullable
current status of the seat warmer ( 0: off, 1: least warm ~ 10: warmest )
steeringWheelHeater of type unsigned byte, , nullable
current status of steering wheel heater ( 0: off, 1: least warm ~ 10: warmest ).
Available Zone: None
targetTemperature of type byte, , nullable
current setting of the desired temperature (Unit is deg. of Celsius, Resolution is 0.5, Range is -70 to 125)

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

4.14 Vision and Parking Interfaces

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

Note

Those three categories need to be more clearly defined. It will help determine data elements fall within them. Vision system and parking seems not very clear in regards with Driving safety where some functions are also related to parking and vision. It is clear that certain elements could fall within multiple categories depending on how one might want to classify them. Vision is much more than only lane departure warning. Electric vehicle category should be renamed in order to cover alternate power trains (hybrid, range extenders,etc)

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

4.14.1 Attributes

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

4.14.2 LaneDepartureDetection Interface

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

enum LaneDepartureStatus {
    "off",
    "pause",
    "running"
};
Enumeration description
offThe function is not running
pauseThe function has been paused (running, but inactive)
runningThe function is in its operational mode
[NoInterfaceObject]
interface LaneDepartureDetection : VehicleCommonDataType {
    readonly    attribute LaneDepartureStatus status;
};
4.14.2.1 Attributes
status of type LaneDepartureStatus, readonly
current status of Lane departure warning function.

4.14.3 Alarm Interface

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

enum AlarmStatus {
    "disarmed",
    "preArmed",
    "armed",
    "alarmed"
};
Enumeration description
disarmedThe alarm is not armed
preArmedThe function is temporary not active
armedThe function is active
alarmedThe Alarm is screaming
[NoInterfaceObject]
interface Alarm : VehicleCommonDataType {
                attribute AlarmStatus status;
};
4.14.3.1 Attributes
status of type AlarmStatus,
current status of In vehicle Alarm System.

4.14.4 ParkingBrake Interface

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

enum ParkingBrakeStatus {
    "inactive",
    "active",
    "error"
};
Enumeration description
inactiveParking brake is not engaged (driving position)
activeParking brake is engaged (parking position)
errorThere is a problem with the parking brake system
[NoInterfaceObject]
interface ParkingBrake : VehicleCommonDataType {
    readonly    attribute ParkingBrakeStatus status;
};
4.14.4.1 Attributes
status of type ParkingBrakeStatus, readonly
current status of parking brake.

4.14.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;
};
4.14.5.1 Attributes
setting of type boolean,
MUST return whether or not the Parking Lights is 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), off (false)

4.15 Use-Cases

4.15.1 Normative

The primary purpose of this specification is to provide web developers the ability to access and set vehicle information through a simple common set of operations including get, set, subscribe, and unsubscribe. Thus normative use cases pertain to this access and do not cover higher application of business level use cases.
4.15.1.1 Get
Get a single value once from the vehicle.
4.15.1.2 Set
Set a single value once in the vehicle.
4.15.1.3 Subscribe
Subscribe to single value until unsubscribed.
4.15.1.4 Set
Unsubscribe to single value.

4.15.2 Informative (Non-Normative)

4.15.2.1 Use Cases for Vehicle Configuration & Identification
  • Driver and technician are able to see vehicle configuration and identification information such VIN and vehicle size.
4.15.2.2 Use Cases for RunningStatus
    TODO:
4.15.2.3 Use Cases for Maintenance
  • Driver is able to see current state of key maintenance indicators (fluid states, battery charge, tire pressure, etc...) giving an snapshot of vehicle health while in and out of vehicle.
  • Driver receives alert notifications in and out of car letting him know of maintenance issues that need to be addressed.
  • If desired driver may share maintenance information with repair facility.
4.15.2.4 Use Cases for Personalization
  • Driver and technician are able to see vehicle personalization information such seat and mirror position.
4.15.2.5 Use Cases for DrivingSafety
    TODO:
4.15.2.6 Use Cases for Climate
  • IVI system shows the status of various climate control equipments as GUI and lets a user control it via touch screen.
  • A user uses his smart devices to remotely check whether side windows of his parked car are closed or not, and to send a request to the car for closing it if opened.
  • A user uses his smart devices to start his car remotely, and turns heaters on to warm up the car inside before getting in the car.
  • If users agree to provide vehicle information to the weather station, many cars can be used to get weather information such as amounts of rain and ambient temperatures.
4.15.2.7 Use Cases for Vision interfaces
  • To warn when the vehicle goes on another lane (Lane departure warning function)
  • To warn in case of an danger (vehicle, pedestrian, animals, stop sign, red light, ...)
  • To record the scene before and after an accident (for insurance or testimony)
  • To improve vision in the dark
4.15.2.8 Use Cases for Parking interfaces
  • To be informed in case of intrusion in or around the vehicle.
  • To be informed of the parking brake status.
4.15.2.9 Use Cases for Electric Vehicle interfaces
  • To see current state of the battery level, remaining time before full charging, ...
  • To check if the charging is plugged or unplugged.

A. References

A.1 Normative references

[HTML5]
Robin Berjon; Steve Faulkner; Travis Leithead; Erika Doyle Navara; Edward O'Connor; Silvia Pfeiffer. HTML5. 4 February 2014. W3C Candidate Recommendation. URL: http://www.w3.org/TR/html5/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. March 1997. Internet RFC 2119. URL: http://www.ietf.org/rfc/rfc2119.txt
[WEBIDL]
Cameron McCormack. Web IDL. 19 April 2012. W3C Candidate Recommendation. URL: http://www.w3.org/TR/WebIDL/

A.2 Informative references

[VIN]
Vehicle Identificaiton Number. URL: http://en.wikipedia.org/wiki/Vehicle_Identification_Number#World_Manufacturer_Identifier