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.
- 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.
- 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: