Integration into a Vehicle

When a head unit runs Android Automotive OS (AAOS) it needs to communicate with the vehicle it is installed in. This happens through the car API of AAOS, which makes it possible to access vehicle properties. When these properties change, the UI can be adjusted accordingly. Similarly when the UI controls are operated by the user, the new property value can be communicated to the vehicle.

See Android Physical Car Interaction.

Integrating TomTom Digital Cockpit into the vehicle

When the APK is installed on a head unit, it needs to get information from the vehicle and send information to the vehicle.

System overview

  • TomTom Digital Cockpit Application: Android Automotive based infotainment system, along with an application suite providing common functionality.
  • Android Automotive OS: Google’s operating system for connected in-vehicle infotainment (IVI) systems.
  • VHAL: The Vehicle Hardware Abstraction Layer is an abstract interface allowing the Android system to communicate with vehicle-specific hardware. The interface is defined using HAL Interface Definition Language (HIDL). It describes the communication with the in-vehicle networks (IVN). Data is transferred using VehiclePropValues.
  • VHAL Implementation: A vendor/vehicle specific implementation of the VHAL interface. It is typically implemented in C/C++ using native APIs generated by the Android build system from VHAL HIDL.
  • Vehicle data: Data coming in from the vehicle sensors.

Signal transfer

The vehicle data used by the application is abstracted from AAOS by the use of the TomTom Digital Cockpit module, specifically by the use of VehicleProperties. These properties hold the current status of the different data values. A value can be changed by the application, when the user operates a control, or by the vehicle when the data in the vehicle changes.

The vehicle data must be mapped to these VehicleProperties. This means that the data (for example CAN data) is mapped to a vehicle property and sent to the VHAL of AAOS. For this a native system service can be used that receives the vehicle signal, converts it to a VehicleProperties value and sends it to Android. To do that, HIDL must be used, because it can be versioned, in contrast to the C/C++ implementations of drivers and JNI interfacing, which was common before Android 8.

Signal transfer example

  • CarPropertyManager: Provides a Java API to access VHAL properties.
  • HIDL: The HAL Interface Definition Language is used within the Hardware Abstraction Layer to define the interfaces describing the individual hardware devices that are used in combination with Android.
  • CAN: The Controller Area Network (CAN) is a network designed to allow micro controllers and devices to communicate with each other without the need for a host computer.

For more information about HIDL interfaces and the CAN see: