JS in AutomotiveJS.everywhere(2013) - Treasure Island, SFAlexandre Morgaut
PresentationAlexandre Morgaut
W3C AC member
Wakanda Team
Community manager
Web Architect
JS, REST, NoSQL
W3C “jseverywhere“ community group
@amorgaut
W3C Business Group
http://www.w3.org/community/autowebplatform/
MembersIntelQNXVerisignOperaNokiaBlackberryVodaphoneSharp
PorscheHyundaiVolkswagenFord*Continental Automotive*KKDILG Electronics...
QNX Architecture
Why HTML5 for Auto
Build on something bigger than automotiveEcosystem – developers, tools, companiesStandards – no vendor lock-inFlexibility – fluid deployment and architecturesBranding – brand same app on different cars with CSSLifespan – will be supported for long timeTime to market – easy to use and leveragePowerful – rich application environmentCross-platform – deploy apps on phones and car
Other SolutionsAndroid
Compatibility limited to Android devices
Android not yet automotive grade
MirrorLink
Responsiveness lacking today
Solves phone to car problem, nothing else
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/
JavaScript API
Considered W3C APIsWeb 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
API proposals
Genivi
Tizen
QNX
Webinos
http://www.w3.org/community/autowebplatform/wiki/Main_Page#Auto_and_Web_Platform__API_draft_proposals
Genevi/LGE code example
// Define constants for transmissionGearTypevar TRANSMISSIONGEARTYPE_AUTO = 1;var TRANSMISSIONGEARTYPE_MANUAL = 2;// Get a transmission gear type from VehicleInfoEventvehicle.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"); }}
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!");}
QNX code example
//define a callback functionfunction 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 + '\n\n' ); }}
var watchId = car.audiomixer.watchAudioMixer(myCallback);
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'; } }
Thanks
http://www.w3.org/community/autowebplatform/
@amorgaut http://about.me/amorgaut
Top Related