Infotainment systems

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.

To be able to collect and distribute information, the system is networked with other control units within the vehicle, as well as with backend servers. To minimize driver distraction, the device offers onboard and online voice control, read-aloud functions and handwriting recognition. We currently use C, C++, Java and JavaScript/TypeScript as typical development languages for our infotainment systems.

User interface – Angular as the infotainment frontend

The user interface (UI) enables the end user to control the functions of an infotainment system. At e.solutions, we use web technologies for this purpose, specifically Angular, HTML5 and JavaScript/TypeScript. It is unusual to find Angular as an embedded technology, but we make it possible. This has not only resulted in one of the largest Angular projects, but also one that has thrown up special performance requirements. To guarantee a consistently positive user experience, screen transitions need to happen quickly and with smooth animations. In achieving this, a number of factors need to be taken into account.

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.

Business logic – Java middleware

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.

Function – core functions of the infotainment system

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:

  • Speech recognition and synthesis
  • Audio management
  • Navigation
  • Adress book
  • Central search function
  • Telephony, Bluetooth and WiFi functions
  • Graphics and camera connection
  • Communication with other vehicle systems
  • Media (audio/video) and smartphone connection
  • Vehicle diagnostics
  • Local and over-the-air software updates
  • Security in the vehicle
  • Performance and stability
  • Sirius connection (US satellite radio)
  • Swarm services, data aggregation with backends, online services

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.

Framework – the backbone of software development

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.

e.solutions has its own embedded middleware solution, which is continuously being developed and forms the basis of all projects. Written fundamentally in C++, the “esoFramework” adapts to all applied operating systems, processor architectures, security concepts and programming languages – from C/C++, Java, Python and Kotlin to JavaScript. For all applications, the esoFramework offers basic mechanisms for communication, monitoring, persistence, logging, etc. into the embedded system. This allows application developers to focus their attentions on the most important aspect – the application code itself.