This document is licensed under a Creative Commons Attribution 3.0 License.
This specification defines a Vehicle Information API which offers a simple interface to get access to vehicle data. A typical use case of the Vehicle Information is the implementation of a tachometer application that allows view inforomation from the vehicle such as speed, tire pressure, and engine rotation speed (RPMs).
This document is merely a public working draft of a potential specification. It has no official standing of any kind and does not represent the support or consensus of any standards organisation.
Navigator InterfaceVehiclePropertyType InterfaceVehiclePropertyError InterfaceVehicleSpeed InterfaceEngineSpeed InterfaceVehiclePowerMode InterfaceTripMeters InterfaceAcceleration InterfaceTransmission InterfaceCruiseControlStatus InterfaceWheelBrake InterfaceLightStatus InterfaceInteriorLightStatus InterfaceHorn InterfaceFuel InterfaceExteriorBrightness InterfaceTemperature InterfaceRainSensor InterfaceWindshieldWiper InterfaceDefrostDictionary DictionaryHVAC InterfaceThis 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. The API also allows users to request data that has been logged previously.
An example of use is provided below:
navigator.vehicle.get("EngineSpeed", onsuccess, onerror); function onsuccess(value) { window.console.log(value.EngineSpeed); } function onerror(e) { window.console.error(e.message); }
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.
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].
This API must be only exposed to trusted content
The Vehicle Infomration interface represents the initial entry point for getting access to the vehicle information services, i.e. Engine Speed and Tire Pressure.
[NoInterfaceObject]
interface Vehicle {
void getSupported (SupportedPropertiesCallback successCallback, VehiclePropertyErrorCallback errorCallback);
void get (DOMString property, VehiclePropertyCallback success, VehiclePropertyErrorCallback errorCallback);
void set (DOMString property, VehiclePropertyType value, VehiclePropertyCallback success, VehiclePropertyErrorCallback errorCallback);
void getHistory (DOMString property, Date startTime, Date endTime, VehiclePropertyListCallback success, VehiclePropertyErrorCallback errorCallback);
};getproperty. Upon
success, the successCallback will be called with the value.
| Parameter | Type | Nullable | Optional | Description |
|---|---|---|---|---|
| property | DOMString | ✘ | ✘ | requested property to be retrieved |
| success | VehiclePropertyCallback | ✘ | ✘ | function to be called when method has completed successfully |
| errorCallback | VehiclePropertyErrorCallback | ✘ | ✘ | this function is called when an error has occured |
voidgetHistoryproperty in series from startTime
to endTime. Upon success, the successCallback will be called
with the result.
| Parameter | Type | Nullable | Optional | Description |
|---|---|---|---|---|
| property | DOMString | ✘ | ✘ | requested property to be retrieved |
| startTime | Date | ✘ | ✘ | beginning time for request |
| endTime | Date | ✘ | ✘ | ending time for request |
| success | VehiclePropertyListCallback | ✘ | ✘ | function to be called when method has completed successfully |
| errorCallback | VehiclePropertyErrorCallback | ✘ | ✘ | this function is called when an error has occured |
voidgetSupported| Parameter | Type | Nullable | Optional | Description |
|---|---|---|---|---|
| successCallback | SupportedPropertiesCallback | ✘ | ✘ | function to be called when method has completed successfully |
| errorCallback | VehiclePropertyErrorCallback | ✘ | ✘ | this function is called when an error has occured |
voidsetproperty to value. Upon
success, the successCallback will be called with the result.
| Parameter | Type | Nullable | Optional | Description |
|---|---|---|---|---|
| property | DOMString | ✘ | ✘ | requested property to be retrieved |
| value | | ✘ | ✘ | corrisponding value to set |
| success | VehiclePropertyCallback | ✘ | ✘ | function to be called when method has completed successfully |
| errorCallback | VehiclePropertyErrorCallback | ✘ | ✘ | this function is called when an error has occured |
void The getSupported
method when invoked MUST run the following steps:
successCallback and pass into the function the
DOMString array representing the supported properties.
The get method when invoked MUST
run the following steps:
property parameter
property is not supported construct a VehiclePropertyError
object and set the code members to VehiclePropertyError.PROPERTY_UNAVAILABLE and
message member to "Unsupported property".
successCallback and pass the VehiclePropertyType
as the argument.
The set method when invoked MUST run
the following steps:
property parameter to the value indicated in the value parameter.
property is not supported construct a VehiclePropertyError
object and set the code members to VehiclePropertyError.PROPERTY_UNAVAILABLE and
message member to "Unsupported property".
successCallback and pass the VehiclePropertyType
as the argument.
The getHistory method when invoked MUST run
the following steps:
property parameter after the time startTime and after
the time endTime.
property is not supported construct a VehiclePropertyError
object and set the code members to VehiclePropertyError.PROPERTY_UNAVAILABLE and
message member to "Unsupported property".
successCallback and pass the array of VehiclePropertyType
as the argument.
VehiclePropertyType InterfaceThe VehiclePropertyType
interface represents the base interface for all vehicle properties.
[NoInterfaceObject]
interface VehiclePropertyType : Event {
readonly attribute Date timeStamp;;
};timeStamp; of type Date, readonly VehiclePropertyError InterfaceThe VehiclePropertyError interface represents the an error returned by the vehicle information system.
manager.
[NoInterfaceObject]
interface VehiclePropertyError {
const unsigned short PERMISSION_DENIED = 1;
const unsigned short PROPERTY_UNAVAILABLE = 2;
const unsigned short TIMEOUT = 3;
const unsigned short UNKNOWN = 10;
readonly attribute unsigned short code;
readonly attribute DOMString message;
};code of type unsigned short, readonly message of type DOMString, readonly PERMISSION_DENIED of type unsigned shortPROPERTY_UNAVAILABLE of type unsigned shortTIMEOUT of type unsigned shortUNKNOWN of type unsigned shortThe VehiclePropertyCallback is called during the navigator.vehicle.get() operation
The VehiclePropertyErrorCallback is called during the navigator.vehicle.get() operation
The VehiclePropertyListCallback is called during the navigator.vehicle.getHistory() operation
The SupportedPropertiesCallback is called during the navigator.vehicle.getSupported() operation
VehicleSpeed InterfaceThe VehicleSpeed interface represents vehicle speed.
[NoInterfaceObject]
interface VehicleSpeed : VehiclePropertyType {
readonly attribute unsigned long VehicleSpeed;
};VehicleSpeed of type unsigned long, readonly EngineSpeed InterfaceThe EngineSpeed interface represents engine speed.
[NoInterfaceObject]
interface EngineSpeed : VehiclePropertyType {
readonly attribute unsigned long EngineSpeed;
};EngineSpeed of type unsigned long, readonly VehiclePowerMode InterfaceThe VehiclePowerMode interface represents the current vehidle power mode.
[NoInterfaceObject]
interface VehiclePowerMode : VehiclePropertyType {
const unsigned short VEHICLEPOWERMODE_OFF = 0;
const unsigned short VEHICLEPOWERMODE_ACCESSORY1 = 1;
const unsigned short VEHICLEPOWERMODE_ACCESSORY2 = 2;
const unsigned short VEHICLEPOWERMODE_RUN = 3;
readonly attribute octet VehiclePowerMode;
};VehiclePowerMode of type octet, readonly VEHICLEPOWERMODE_ACCESSORY1 of type unsigned shortVEHICLEPOWERMODE_ACCESSORY2 of type unsigned shortVEHICLEPOWERMODE_OFF of type unsigned shortVEHICLEPOWERMODE_RUN of type unsigned shortTripMeters InterfaceThe TripMeters interface represents the current trip meters.
[NoInterfaceObject]
interface TripMeters : VehiclePropertyType {
attribute sequence unsigned long TripMeters;
};TripMeters of type sequence unsigned long, Acceleration InterfaceThe Acceleration interface represents vehicle acceleration.
[NoInterfaceObject]
interface Acceleration : VehiclePropertyType {
readonly attribute unsigned long X;
readonly attribute unsigned long Y;
readonly attribute unsigned long Z;
};X of type unsigned long, readonly Y of type unsigned long, readonly Z of type unsigned long, readonly Transmission InterfaceThe Transmission interface represents the current transmssion gear and mode.
[NoInterfaceObject]
interface Transmission : VehiclePropertyType {
const unsigned short TRANSMISSIONPOSITION_NEUTRAL = 0;
const unsigned short TRANSMISSIONPOSITION_FIRST = 1;
const unsigned short TRANSMISSIONPOSITION_SECOND = 2;
const unsigned short TRANSMISSIONPOSITION_THIRD = 3;
const unsigned short TRANSMISSIONPOSITION_FORTH = 4;
const unsigned short TRANSMISSIONPOSITION_FIFTH = 5;
const unsigned short TRANSMISSIONPOSITION_SIXTH = 6;
const unsigned short TRANSMISSIONPOSITION_SEVENTH = 7;
const unsigned short TRANSMISSIONPOSITION_EIGHTH = 8;
const unsigned short TRANSMISSIONPOSITION_NINTH = 9;
const unsigned short TRANSMISSIONPOSITION_TENTH = 10;
const unsigned short TRANSMISSIONPOSITION_CVT = 64;
const unsigned short TRANSMISSIONPOSITION_REVERSE = 128;
const unsigned short TRANSMISSIONPOSITION_PARK = 255;
const unsigned short TRANSMISSIONMODE_NORMAL = 0;
const unsigned short TRANSMISSIONMODE_SPORT = 1;
const unsigned short TRANSMISSIONMODE_ECONOMY = 2;
const unsigned short TRANSMISSIONMODE_OEMCUSTOM1 = 3;
const unsigned short TRANSMISSIONMODE_OEMCUSTOM2 = 4;
readonly attribute octet GearPosition;
readonly attribute octet Mode;
};GearPosition of type octet, readonly Mode of type octet, readonly TRANSMISSIONMODE_ECONOMY of type unsigned shortTRANSMISSIONMODE_NORMAL of type unsigned shortTRANSMISSIONMODE_OEMCUSTOM1 of type unsigned shortTRANSMISSIONMODE_OEMCUSTOM2 of type unsigned shortTRANSMISSIONMODE_SPORT of type unsigned shortTRANSMISSIONPOSITION_CVT of type unsigned shortTRANSMISSIONPOSITION_EIGHTH of type unsigned shortTRANSMISSIONPOSITION_FIFTH of type unsigned shortTRANSMISSIONPOSITION_FIRST of type unsigned shortTRANSMISSIONPOSITION_FORTH of type unsigned shortTRANSMISSIONPOSITION_NEUTRAL of type unsigned shortTRANSMISSIONPOSITION_NINTH of type unsigned shortTRANSMISSIONPOSITION_PARK of type unsigned shortTRANSMISSIONPOSITION_REVERSE of type unsigned shortTRANSMISSIONPOSITION_SECOND of type unsigned shortTRANSMISSIONPOSITION_SEVENTH of type unsigned shortTRANSMISSIONPOSITION_SIXTH of type unsigned shortTRANSMISSIONPOSITION_TENTH of type unsigned shortTRANSMISSIONPOSITION_THIRD of type unsigned shortCruiseControlStatus InterfaceThe CruiseControlStatus interface represents cruise control settings.
[NoInterfaceObject]
interface CruiseControlStatus : VehiclePropertyType {
readonly attribute boolean Activated;
readonly attribute unsigned short Speed;
};Activated of type boolean, readonly Speed of type unsigned short, readonly WheelBrake InterfaceThe WheelBrake interface represents wheel brake status.
[NoInterfaceObject]
interface WheelBrake : VehiclePropertyType {
readonly attribute boolean Engaged;
};Engaged of type boolean, readonly LightStatus InterfaceThe LightStatus interface represents exterior light statuses.
[NoInterfaceObject]
interface LightStatus : VehiclePropertyType {
readonly attribute boolean Head;
readonly attribute boolean RightTurn;
readonly attribute boolean LeftTurn;
readonly attribute boolean Brake;
readonly attribute boolean Fog;
readonly attribute boolean Hazard;
readonly attribute boolean Parking;
readonly attribute boolean HighBeam;
};Brake of type boolean, readonly Fog of type boolean, readonly Hazard of type boolean, readonly Head of type boolean, readonly HighBeam of type boolean, readonly LeftTurn of type boolean, readonly Parking of type boolean, readonly RightTurn of type boolean, readonly InteriorLightStatus InterfaceThe InteriorLightStatus interface represents interior light status.
[NoInterfaceObject]
interface InteriorLightStatus : VehiclePropertyType {
readonly attribute boolean Passenger;
readonly attribute boolean Driver;
readonly attribute boolean Center;
};Center of type boolean, readonly Driver of type boolean, readonly Passenger of type boolean, readonly Horn InterfaceThe Horn interface represents horn status.
[NoInterfaceObject]
interface Horn : VehiclePropertyType {
readonly attribute boolean On;
};On of type boolean, readonly Fuel InterfaceThe Fuel interface represents vehicle fuel status.
[NoInterfaceObject]
interface Fuel : VehiclePropertyType {
readonly attribute unsigned short Level;
readonly attribute unsigned short Range;
readonly attribute unsigned short InstantConsumption;
readonly attribute unsigned short InstantEconomy;
attribute unsigned short AverageEconomy;
};AverageEconomy of type unsigned short, InstantConsumption of type unsigned short, readonly InstantEconomy of type unsigned short, readonly Level of type unsigned short, readonly Range of type unsigned short, readonly The EngineOil interface represents engine oil status.
[NoInterfaceObject]
interface Horn : VehiclePropertyType {
readonly attribute unsigned short Remaining;
readonly attribute long Temperature;
readonly attribute unsigned short Pressure;
};Pressure of type unsigned short, readonly Remaining of type unsigned short, readonly Temperature of type long, readonly ExteriorBrightness InterfaceThe ExteriorBrightness interface represents brightness outside the vehicle.
[NoInterfaceObject]
interface ExteriorBrightness : VehiclePropertyType {
readonly attribute unsigned long ExteriorBrightness;
};ExteriorBrightness of type unsigned long, readonly Temperature InterfaceThe Temperature interface represents temperature inside and outside the vehicle.
[NoInterfaceObject]
interface Temperature : VehiclePropertyType {
readonly attribute signed short Interior;
readonly attribute signed short Exterior;
};Exterior of type signed short, readonly Interior of type signed short, readonly RainSensor InterfaceThe RainSensor interface represents intensity of rain.
[NoInterfaceObject]
interface RainSensor : VehiclePropertyType {
readonly attribute unsigned short RainSensor;
};RainSensor of type unsigned short, readonly WindshieldWiper InterfaceThe WindshieldWiper interface represents the status of the windshield wiper.
[NoInterfaceObject]
interface WindshieldWiper : VehiclePropertyType {
const unsigned short WIPERSPEED_OFF = 0;
const unsigned short WIPERSPEED_SLOWEST = 1;
const unsigned short WIPERSPEED_FASTEST = 5;
const unsigned short WIPERSPEED_AUTO = 10;
readonly attribute unsigned short WindshieldWiper;
};WindshieldWiper of type unsigned short, readonly WIPERSPEED_AUTO of type unsigned shortWIPERSPEED_FASTEST of type unsigned shortWIPERSPEED_OFF of type unsigned shortWIPERSPEED_SLOWEST of type unsigned shortDefrostDictionary Dictionarydictionary DefrostDictionary {
unsigned short window;
boolean defrost;
};DefrostDictionary Membersdefrost of type booleanwindow of type unsigned shortHVAC InterfaceThe HVAC interface to get status and control the vehicle HVAC system.
[NoInterfaceObject]
interface HVAC : VehiclePropertyType {
const unsigned short AIRFLOWDIRECTION_FRONTPANEL = 0;
const unsigned short AIRFLOWDIRECTION_FLOORDUCT = 1;
const unsigned short AIRFLOWDIRECTION_FRONT = 0x02;
const unsigned short AIRFLOWDIRECTION_DEFROSTER = 0x04;
attribute unsigned short AirflowDirection;
attribute unsigned short FanSpeed;
attribute unsigned short TargetTemperature;
attribute boolean AirConditioning;
attribute boolean AirRecirculation;
attribute boolean Heater;
attribute DefrostDictionary Defrost;
attribute boolean SteeringWheelHeater;
attribute boolean SeatHeater;
};AirConditioning of type boolean, AirRecirculation of type boolean, AirflowDirection of type unsigned short, navigator.vehicle.get("HVAC", onsuccess, onerror); function onsuccess(value) { var hvacsettings = value; value.AirflowDirection = value.AIRFLOWDIRECTION_FRONT | value.AIRFLOWDIRECTION_DEFROSTER; navigator.vehicle.set("HVAC", value, onsetsuccess, onerror); } function onerror(e) { window.console.error(e.message); } function onsetsuccess() { window.console.log("success!"); }
Defrost of type DefrostDictionary, FanSpeed of type unsigned short, Heater of type boolean, SeatHeater of type boolean, SteeringWheelHeater of type boolean, TargetTemperature of type unsigned short, AIRFLOWDIRECTION_DEFROSTER of type unsigned shortAIRFLOWDIRECTION_FLOORDUCT of type unsigned shortAIRFLOWDIRECTION_FRONT of type unsigned shortAIRFLOWDIRECTION_FRONTPANEL of type unsigned short