This document discusses using HTML5 for automotive applications. It proposes defining a runtime environment and security model for HTML5 in vehicles. It outlines specifications being developed for app lifecycles, URIs, and APIs for contacts, messaging, location, and other functions. Example code is provided for getting and setting vehicle data using JavaScript APIs. Standards are being developed for a Vehicle Information API and interfaces for vehicle data. An emulator called Ripple is mentioned for testing HTML5 automotive applications.
3. System Application WG
MISSION
Define a runtime environment
Define a security model
Define APIs to provide native like applications
SPECIFICATIONS
App Lifecycle, App URI, Task Sceduler
Contacts, Messaging, Telephony, TCP UDP Sockets
http://www.w3.org/2012/sysapps/
4. Automotive & Web Platform BG
http://www.w3.org/community/autowebplatform/
13. Why HTML5 for Auto
Build on something bigger than automotive
Ecosystem – developers, tools, companies
Standards – no vendor lock-in
Flexibility – fluid deployment and architectures
Branding – brand same app on different cars with CSS
Lifespan – will be supported for long time
Time to market – easy to use and leverage
Powerful – rich application environment
Cross-platform – deploy apps on phones and car
14. Other Solutions
Android
Compatibility limited to Android devices
Android not yet automotive grade
!
MirrorLink
Responsiveness lacking today
Solves phone to car problem, nothing else
15. TIZEN IVI in Jaguar LandRover
The proof of concept has been created on openly available
hardware with an Intel CPU, using the Tizen open source Linux
distribution as a software platform with latest HTML5 graphical
user interface. Tizen was chosen as a GENIVI compliant
reference.
http://www.tizenexperts.com/2013/04/jaguar-land-rover-kerjasama-dengan-xchanging-dan-arynga-untuk-update-software-tizen-ivi/
http://tizentalk.com/2013/05/tizen-ivi-proof-of-concept-on-the-land-rover/
17. Considered W3C APIs
Web Sockets
App Cache
Web Storage
Geolocation
Device Orientation
Web Audio
Media Capture
Proximity Sensor
Telephony API
...
http://www.w3.org/community/autowebplatform/wiki/Main_Page/
CollectionOfApis
19. Genevi/LGE code example
// Define constants for transmissionGearType
var TRANSMISSIONGEARTYPE_AUTO = 1;
var TRANSMISSIONGEARTYPE_MANUAL = 2;
// Get a transmission gear type from VehicleInfoEvent
vehicle.get("vehicleinfo_transmissiongeartype", handleVehicleData, handleError)
!
function handleVehicleData(data) {
if (data.transmissionGearType == TRANSMISSIONGEARTYPE_AUTO) {
console.log("Automatic transmission equipped");
}
else if (data.transmissionGearType == TRANSMISSIONGEARTYPE_MANUAL) {
console.log("Manual transmission equipped");
}
}
20. Tizen code example
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!");!
}
21. QNX code example
//define a callback function
function myCallback(audioMixerItems) {
//iterate through the changed items
for (var i = 0; i < audioMixerItems.length; i++) {
console.log(
//a car.audiomixer.AudioMixerSetting value
"audio mixer item setting = " + audioMixerItems[i].setting + 'n' +
//a car.Zone value
"audio mixer item zone = " + audioMixerItems[i].zone + 'n' +
//a numeric value
"audio mixer item value = " + audioMixerItems[i].value + 'nn'
);
}
}
!
var watchId = car.audiomixer.watchAudioMixer(myCallback);
22. Webinos code example
// checking if driver door is openend. vehicleService is the vehicle service,!
// discovered through the webinos Discovery API, !
// that has been selected by the user !
vehicleService.vehicle.addEventListener("doors", doorHandler);!
function doorHandler(doors){!
if(doors.driver){!
document.getElementById("info").innerHTML = 'Please close driver door';!
} !
} !
24. Vehicle Information API
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;
};
27. Promise example
var vehicle = navigator.vehicle;
var zone = new Zone;
!
vehicle.climateControl.set(value, zone.driver).then(function() {
// first callback manage success
console.log("successfully set acStatus");
}, function(error) {
// second callback manage error
console.log("there was an error");
});