We are very happy to announce the latest edition of our Qt Automotive Suite 5.12, a unified HMI toolchain and framework for building your next generation digital cockpits. It is based on Qt 5.12 and it is an LTS release as well.
In case you hear about this for the first time, Qt Automotive Suite was created to solve the key challenges in HMI creation (see https://blog.qt.io/blog/2018/06/27/introducing-qt-automotive-suite-5-11/ and https://blog.qt.io/blog/2018/02/27/introducing-qt-automotive-suite-2-0/) for digital cockpits in automobiles. With combinations of world class tooling, automotive specific software components, and highly optimized software framework for embedded devices, we are solving those challenges and offering the world’s end-to-end HMI solution with a single technology.
In the 5.12 release, we keep enhancing our components to evolve in following key directions:
- Qt everywhere
Figure 1. Qt drives all screens in the digital cockpit
- Continuously improving developer productivity
- The power of multi-process Qt-based HMI on embedded systems
- Paving the way for easy integration with 3rd party services
For the Qt Application Manager, we are introducing the new feature – “Intent Management” as a technology preview. Today, the concept of intents is commonly used in mobile platforms such as iOS and Android, where its primary use case is to facilitate intercommunication between apps as a service, for example voice assistants used by other apps. With our new Intent Management, it is now possible to provide and query services across applications via a communication channel. This would allow applications to publish their “intent” capabilities, thereby other apps and services such as voice assistant can query and trigger the right application for intended action. Soon you can integrate Amazon Alexa Auto or Google assistant and let them easily communicate with HMIs in the connected vehicles.
For Qt IVI, we have now created a new Simulation System which allows scripting of simulated backend service data and basic logic in QML. With that, Qt IVI can not only generate frontend and backend APIs, it also allows developers to easily write backend simulations which provide not only data but also can simulate some business logic.
We now introduced a new component called Deployment Server, formerly known as Neptune Appstore. It is a lightweight network server that hosts downloadable application packages. The main use of the Deployment Server is to allow easy system integration in larger projects with multiple teams. Teams can publish their apps, e.g. HVAC, Media, or Navigation, one by one to the deployment server and so enable quick testing of new app versions with a minimal risk and effort.
To further enhance the developer experience, we added a new template to the Project Wizard in Qt Creator which can be used to create a skeleton for an application running with Qt Application Manager.
Maximizing software reusability has always been what Qt is best known for – code once, deploy everywhere. Now we are introducing a progressive support for mobile platforms, so the HMI code developed for IVI can also be used to create OEM’s companion applications. In 5.12, we added a technical preview where developers can compile and run Neptune Reference IVI project for Android as is.
Figure 2. Architecture of Qt Automotive Suite
Qt for Device Creation 5.12 LTS
Qt Automotive Suite 5.12 sits on top of Qt 5.12, bringing major new features, performance & stability improvement, and receive Long Term Support.
Qt 3D Studio & Qt Design Studio
With Qt 3D Studio 2.2, we now have improved usability and introduced new features such as supporting compressed textures and stereoscopic rendering. Have a read at Qt 3D Studio 2.2 blog. We also recently introduced a new design tool called Qt Design Studio, bringing designers and developers closer than ever for 2D and 2.5D HMI creation.
Figure 3: Design tool and software framework under one technology
Qt Application Manager
The latest Qt Application Manager has following updates:
- The core Application and Window management APIs have been heavily refactored to support a more QML-like, declarative approach when developing a System UI
- The monitoring sub-system (responsible for reporting CPU/GPU load, memory consumption, etc.) was also rewritten with a new API that makes it very easy to use it from QML as well as to extend it from QML via custom “sensors”
- Added a new sub-system called “Intents”, which provides a loosely coupled inter-application communication mechanism. Basic communication in single- as well as multi-process mode works seamlessly. More advanced features like sharing of file handles and support for background services are to be implemented
- The shared window properties are now implemented via a custom Wayland extension instead of using Qt’s proprietary, deprecated one
- Dynamically installed applications can now be used to update built-in applications by shadowing them
- Because of the new window management API and the refactored code, the QML imports have been upgraded to version “2.0”
Qt Application Manager Plugin for Qt Creator
The latest Qt Application Manager Plugin for Qt Creator has following updates:
- Added application templates for a system UI and a simple application to the “New Project” wizard
- Added a possibility to launch a system UI as an external tool in Qt Creator. Minidesk is registered as an external tool when the Qt Installer is used
Qt IVI has received updates highlighted as follow:
- QtIvi got extended by the QtIvi Simulation System (http://doc-snapshots.qt.io/qtivi/simulation-system.html). In previous versions a “simulation” backend needed to be created either manually or using a static autogenerated stub. The new QIviSimulationEngine provides a better flexible way to script the “simulation” in QML and use JSON as a simulation data format. Both can be overwritten at runtime to provide an easy way of testing a specific behavior. All is still integrated in the “ivigenerator” and can be autogenerated from QFace filesFigure 4: Qt IVI Simulation System
- Improved integration of Python on Windows and macOS. Python is used by the code generator based on QFace
- The python integration is now more flexible and creates a virtualenv only in situation where it is really needed. If all the needed python packages are provided by the system’s python version no virtualenv is created.
- To improve CI integrations, a folder of pre-cached pip packages can now be provided at build time to reduce the amount of downloaded python packages.
- With 5.12, the “ivigenerator” now also supports the autogeneration of models from QFace files. The new autogenerated models use the QIviPagingModel class as a base to provide full support of retrieving the model data from an async IPC API, see http://doc-snapshots.qt.io/qtivi/models.html
QML Live has the following updates:
- Focus the development of QML Live on the needs of those users who do not use Qt Design Studio
- Introduction of project spaces with “qmllive” project files
- Various improvements in the UI of the QML Bench
Deployment Server has following updates:
- Refactored the code to leave the status of the demo
- Added a possibility to upload a package from command line
- Start using tags for various checks in the queries from different clients
- Support of checking the CPU architecture, based on tags
- Support of checking the version information, based on tags
GammaRay has the following updates:
- Added new inspection tool for QtLocation geo positioning data. Besides visualizing the currently provided positioning data on a map, it also allows you to override this data, either manually or via replaying an NMEA GPS log. So there’s no need to physically move around anymore when debugging location-aware applicationsFigure 5. Introspecting geo positioning data
- Added a new centralized problem report view. While so far inspection tools that noticed an issue in the application code reported that in their own way, we now have the infrastructure to collect this in a single place, including navigation to the corresponding source code location where available. This view now also allows to scan the entire application for certain problem types
Figure 6. Centralized problem report view
- Added new consolidated system information view, that unifies system environment and system paths views, and can show a number of additional pieces of information about the Qt installation used by the analyzed application
Reference UI has received updates highlighted as follow:
- Enabling of the use of harnesses for isolated component development and testing with the first use in the Instrument Cluster side
- Refactored the file and folder structures for the code as well as QML imports and assets for a more modular architecture
- RTL language support with automatic layout mirroring and translation to Arabic for parts of the UI
Figure 7. RTL language support
- Support of multiple Styles incl. a possibility to use style-specific UI components in one application code base
- Added the LUCEE Style to be used in the new multi-style setupFigure 8. A new theme
- Make it possible to have only one Theme in a Style
- Make “main.qml” contains siblings of windows (Center Console, Instrument Cluster and HUD)
- Move the climate section out of the System UI into a separate application and introduce BottomBar Window
- A new handling of a multi-display environment with the HUD window as example.
- Able to start when the Cluster and HUD displays are not available
- Persistency support for application widgets
- Migrated to use the refactored Application and Window API in the Qt Application Manager
- Migrated to use the refactored SystemMonitor API in the Qt Application Manager
- Introduce a clearer Neptune Window API to be used by the application that aligned with Neptune Window Item API in the System UI
- Initial reference test scripts for Squish. They are located in the folder “squishtests”.
- Migrated component tests based on QML Test Runner and located in the folder “tests” to Qt 5.12
- The Appstore application has been renamed to Downloads
- Various enhancements in the provided applications and in the System UI
Qt Automotive Suite 5.12 comes with further improved documentation and examples for most of development needs.
With Qt Automotive Suite 5.12, we revamped the architecture behind the new Neptune 3 reference UI to further simplify the UI development. We introduced Intent Management in Qt Application Manager which enriches the multi-process pattern of Qt Automotive Suite application development with a fundamental capability of inter-application services. And we made a significant number of smaller improvements in all our software components. Once again, many thanks for the feedback especially from our customers and prospects.