As well as standard functions, vehicle infotainment systems include important driver-relevant content, such as navigation, telephony, radio/entertainment and vehicle functions such as climate control or tire pressure monitoring. All these elements can be accessed via a single user interface in a central control unit.
Using Angular, we have defined a set of general conditions that enable the application to be rapidly executed. An important concept here is ‘change detection’, whereby we control the updates in the templates ourselves and keep them to a minimum.
There are also numerous points to consider in the area of layout definition via CSS. Animations are defined in such a way that they can be hardware-accelerated and executed on the graphics processor. The rendering pipeline of the browser is not a theoretical concept for us – it is only as a result of our expertise in this area that we can develop high-performance web applications in the embedded environment.
The connection between the UI and the functional components in the infotainment system is provided by what we call the ‘business logic’ function. This is a Java server that provides access to vehicle functions (e.g. navigation, telephone, media) via a REST interface. This interface not only provides functions, but also links the individual components with each other. A classic example is an incoming telephone call – in this case, the business logic function must be able to switch the audio connection from the radio to the telephone.
We have chosen RxJava for our business logic system. This approach is ideally suited for implementing the asynchronous and event-driven processes that occur in an infotainment system. To efficiently test our business logic system during development and to protect it against errors, we place a particular emphasis on unit tests.
The core functions of the infotainment system are written at both our Ingolstadt and Erlangen sites. This often involves number crunching tasks and performance. For the development of the core functions, we therefore rely primarily on the C++ language and also use Java in certain areas.
At e.solutions, we take full or partial responsibility for the following functional areas:
Some solutions are implemented with our partner companies. We undertake technical support, integration into the overall software or, if required, its replacement. Our goal is always to be able to offer end customers best-in-class systems.
The functions we provide are based on the highly successful e.solutions framework, which abstracts the different operating systems and allows inter-process communication. Following integration with the other components of the infotainment system, we test our software – typically on a daily basis – in our own test vehicles. These are both set up and continuously updated by our “Flash Team”. As a result, we are in a position to immediately identify and assign errors.
Our mission is to holistically develop and support an automotive series product. This is why our teams at the Ingolstadt site are also responsible for software integration, production support and the analysis of field complaints.
The middleware – also known as the software framework and at e.solutions as “esoFramework” – forms the backbone of all professional industrial-scale software development. The framework enables the distributed development of software components that are independent of language, operating system and architecture.
For example, components from the simulation can be connected live from the desktop to components in the vehicle. For analysis purposes, the communication between the components can be recorded in the source code. In the event of a system crash, applications can be automatically restarted or even replaced by new versions during operation.