+ All Categories
Home > Software > Qt Automotive Suite - under the hood // Qt World Summit 2017

Qt Automotive Suite - under the hood // Qt World Summit 2017

Date post: 22-Jan-2018
Category:
Upload: johan-thelin
View: 162 times
Download: 2 times
Share this document with a friend
26
Qt Automotive Suite Under the hood after one year of hacking Johan Thelin
Transcript
Page 1: Qt Automotive Suite - under the hood // Qt World Summit 2017

Qt Automotive SuiteUnder the hood after one year of hackingJohan Thelin

Page 2: Qt Automotive Suite - under the hood // Qt World Summit 2017

Introduction

Johan Thelin, System Architect at Luxoft

Background: Qt Champion, Foundations of Qt Development, QmlBook, Pelagicore, Nokia Qt Development Frameworks

qmlbook.org

Page 3: Qt Automotive Suite - under the hood // Qt World Summit 2017

What’s in the Box?

Core components (non UI)

Qt Application Manager

Qt IVI

Qt GENIVI Extras

Tools and best practices

QmlLive

GammaRay

Integrations of QtAM in QtCreator

Page 4: Qt Automotive Suite - under the hood // Qt World Summit 2017

What’s in the Box?

Neptune – An Automotive Reference UI

Center stack

Instrument Cluster

AppStore

Solutions to selected key issues in IVI

Notifications prioritization

Application life-cycle

Security for deployment and execution

Page 5: Qt Automotive Suite - under the hood // Qt World Summit 2017

What’s left to do?

Qt Automotive Suite provides a reference UI

OEMs still have to provide

Deep vehicle integration

OEM specific features and extensions

End-user available application distribution

Page 6: Qt Automotive Suite - under the hood // Qt World Summit 2017

Developers first!

Our mission is to bring the Qt way to automotive

Easy to get started

Ease of development

Great documentation

All the tools you need at your fingertips

Page 7: Qt Automotive Suite - under the hood // Qt World Summit 2017

A Look at the Past Year

Page 8: Qt Automotive Suite - under the hood // Qt World Summit 2017

Qt Application Manager at a Glance

Wayland compositor

Graphics

Input

Owns the Apps

Installation, update, removal

Start, pause, stop

Run-time for the System UI

Page 9: Qt Automotive Suite - under the hood // Qt World Summit 2017

Qt Application Manager

Timing and fidelity

StartTimer Start-up timing Support custom checkpoints Can be used for the System UI and Apps

ProcessMonitor Frame rate Memory usage CPU load

SystemMonitor Frame rate Memory rate CPU load # of CPUs Amount of memory

Page 10: Qt Automotive Suite - under the hood // Qt World Summit 2017

Qt Application Manager

• Notification Manager

• Prioritization

• Stickyness

• Actions

• Progress

• Time outs

• All still via org.freedesktop.Notifications

Page 11: Qt Automotive Suite - under the hood // Qt World Summit 2017

Qt Application Manager

Code base maintenance

More usage of C++11 nullptr

Q_DECL_NOEXCEPT_EXPR(false)

Page 12: Qt Automotive Suite - under the hood // Qt World Summit 2017

Qt Application Manager

Page 13: Qt Automotive Suite - under the hood // Qt World Summit 2017

Neptune UI at a Glance

Reference UI and demonstrator baseline

System UI runs on Qt Application Manager

A variety of Apps

Settings

Navigation

Media

Browser

and so on

Page 14: Qt Automotive Suite - under the hood // Qt World Summit 2017

Neptune UI

• Most visible change is the WindowOverview page

Page 15: Qt Automotive Suite - under the hood // Qt World Summit 2017

WindowOverview Page

GridView {model: ListModel {}

delegate: Item {ShaderEffectSource {

anchors.fill: parentanchors.margins: gridView.paddingsourceItem: model.item

}}

Connections {target: ApplicationManagerInterface

onApplicationSurfaceReady: {...

gridView.model.append({ "item" : item })}

onApplicationSurfaceLost: {for (var i = 0; i < gridView.model.count; ++i) {

if (gridView.model.get(i).item === item)gridView.model.remove(i);

}}

}

Page 16: Qt Automotive Suite - under the hood // Qt World Summit 2017

WindowOverview Page

delegate: Item {MouseArea {

anchors.fill: parentonClicked: {

ApplicationManager.startApplication(ApplicationManagerInterface.appIdFromWindow(model.item))root.close()// Hide all other windows, otherwise the will be in the stack and switching doesn't workfor (var i = 0; i < gridView.model.count; ++i) {

var window = gridView.model.get(i).itemif (window !== model.item)

WindowManager.setWindowProperty(window, "visibility", false)}

}}

Tool {onClicked: ApplicationManager.stopApplication(ApplicationManagerInterface.appIdFromWindow(model.item))

}}

Page 17: Qt Automotive Suite - under the hood // Qt World Summit 2017

Taking it to the Next Level

• We are doing a face-lift of Neptune...

• ...both graphical and code wise

• New look and feel – still under development

• Qt Quick Controls 2

• Updated layout strategy

Page 18: Qt Automotive Suite - under the hood // Qt World Summit 2017

Qt IVI at a Glance

Qt abstraction layer on top of the platform services

IPC agnostic, platform agnostic

Dynamically loaded backends

Dynamic bindings all the way

Can interchange backends

Allows for service discovery

Page 19: Qt Automotive Suite - under the hood // Qt World Summit 2017

Qt IVI – Code Generator with QFace

• Reference implementations of Media and VehicleFunctions

• Integration of QFace

• Code generator based on Qt aware IDL

• Jinja based code generators – very simply to extend

• Fully integrated in your qmake / cmake workflow

• Handwritten APIs for static APIs, e.g. media, tuner, bluetooth

• Generated APIs for volatile APIs, e.g. vehicle signals

Page 20: Qt Automotive Suite - under the hood // Qt World Summit 2017

File(s)Generator(s)

Qt IVI - QFace

IDL Model Generator(s) Source file(s)

QFace

Page 21: Qt Automotive Suite - under the hood // Qt World Summit 2017

Qt IVI - QFace

• IDL supports

• Interfaces

• Data types, structs, enums, etc

• Annotations – meta-data for the generators

• Jinja based generators

• Used for Python web frameworks

• Lets you traverse the model

• Very easy to write custom generators

System

Module

Import Interface

Property

Operation

Event

Enum Flag Struct

Property

Page 22: Qt Automotive Suite - under the hood // Qt World Summit 2017

QML Live

• Live reloader with server/client architecture

• Very quick turn-around time for developers and designers

• Many contributions from Jolla

• Extraction of core to lib

• Many bugs squashed

• Lost dependencies on widgets

Page 23: Qt Automotive Suite - under the hood // Qt World Summit 2017

More...

• Qt

• GammaRay

• Qt GENIVI Extras module

Page 24: Qt Automotive Suite - under the hood // Qt World Summit 2017

Where are we heading?

Updated Neptune UI

Redesigned

Qt Quick Controls 2

Qt3D for vehicle visualizations

Integration of Squish

A new Instrument Cluster

Qt IVI

More APIs

Refactoring VehicleSettings to use QFace

Enhanched Emulator support

More how-to documentation

Page 25: Qt Automotive Suite - under the hood // Qt World Summit 2017

Where to get it?

qt.io pelux.iogenivi.org

Page 26: Qt Automotive Suite - under the hood // Qt World Summit 2017

Thank you for your attention!

[email protected]


Recommended