<<

GENIVI Technical Summit 2019 Vehicle Hardware (HAL) Design

12 November 2019 Vehicle Hardware Abstraction Layer (VHAL) Design

AOSP Overview

• Android is an open source, -based stack created for a wide array of devices and form factors. • Android's primary purpose is to create an open software platform. • The objective is a shared product that each contributor can tailor and customize. • Uncontrolled customization can lead to incompatible implementations. To prevent this, the Android Open Source Project (AOSP)maintains the Android Compatibility Program • Besides infotainment tasks, AOSP aims to handle vehicle-specific functions. • Key Architecture Aspect: • AIDL: allows you to define the programming interface that both the client and service agree upon in order to communicate with each other using inter- communication (IPC) • Hardware Abstraction Layer (HAL) provides standard interfaces that expose device hardware capabilities to the higher-level. • Binder IPC – is the backbone of Android communication system. • TREBLE: OS Framework update without affecting lower layers and applications

2 29 October 2019 |. Copyright © GENIVI Alliance 2019 Vehicle Hardware Abstraction Layer (VHAL) Design

Vehicle HAL & Vehicle Properties

• Vehicle Hardware Abstraction Layer (VHAL) interface defines the properties OEMs can implement. • Each property is uniquely identified by an int32 key and has a predefined type • Each Property is defined with following attributes: • Area Type • Zone: Each zoned property must use pre-defined area type. Each area type has a set of bit flags defined in an enum for the area type. • Area ID: Each zoned property may support one or more Area IDs • Android provisions to define vendor specific properties with VENDOR as group.

3 29 October 2019 |. Copyright © GENIVI Alliance 2019 Vehicle Hardware Abstraction Layer (VHAL) Design

Vehicle HAL & Vehicle Properties

• Every property value comes with a VehiclePropertyStatus value. This indicates the current status for the property: • AVAILABLE • UNAVAILABLE and • ERROR • The VHAL uses the following interfaces • Getter API • Setter API • Subscribe • Callbacks

4 29 October 2019 |. Copyright © GENIVI Alliance 2019 Vehicle Hardware Abstraction Layer (VHAL) Design

Problem statement

• Currently, Android defines minimal set of vehicle properties, interfaces and data types to access vehicle data. For OEMs, in order to access the vehicle data from other ECUs, custom vehicle properties and custom HALs needs to be implemented; which leads to inconsistent implementation vehicle data access. • For accessing the vehicle property metadata, AOSP enforces the architecture to fulfill the interface requirements for the vehicle HAL. • OEMs need a simpler, scalable and reusable approach to access aggregated vehicle data. This creates and enables App development infrastructure for better user experience. • So, in order to address these concerns, is there a solution to define scalable, reusable vehicle data model and interface to access it? • Does it makes sense to standardize data model and interface to access?

5 29 October 2019 |. Copyright © GENIVI Alliance 2019 Data centric API as a reusable Assert

Do you see VSS as a data centric abstraction standard? Android Automotive CE Device Other ECUs W3C Vehicle API OEM Specific (Android / iOS) (Linux / QNX / Autosar) ( VSS )

Data centric model ( understandable by 3rd party ) Service driven API

Vehicle

• If the answer is “No”: Alternatives? Missing features? Requirements to be considered? • If the answer is “Yes”: Status of current VSS standard? GENIVI VSS standardization working model? to consider? 6 29 October 2019 |. Copyright © GENIVI Alliance 2019 Data centric API as a reusable Assert

How to expose car network the right way? Android Automotive CE Device Other ECUs W3C Vehicle API OEM Specific (Android / iOS) (Linux / QNX / Autosar) ( VSS )

Simple car data access ( 3rd party developers ) Service driven API Data centric model ( understandable by 3rd party )

Vehicle

• Which requirements have to be fulfilled by the solution? • What is our target architecture? (document advantages and disadvantages for each arch. proposal) • Contribution by GENIVI?

7 29 October 2019 |. Copyright © GENIVI Alliance 2019 Architectural proposal I (via custom HAL)

cmp VSS prop handling

Applications Legend Genivi application Generic Automotive Google app Genivi

VISSAPI CarAPI

Android Framework layer Java API Java API CTS CarAIDL VISS API VISS AIDL Car API

AIDL AIDL Genivi aware components will have access to VISS Service Car Service complete set of VSS CTS and VTS test suites exposed by VISS server in are required for Android AIDL Android fashioned way. AIDL certification VISS AIDL CarAIDL HIDL HIDL Provides properties VISSHAL Provides complete set of VehicleHAL defined and required by VSS Android in Vehicle HIDL properties served by VISS VehicleHAL VISSHAL spec. This is subset of VSS Vendor partition server (VSS set). set served by VISS server. HIDL HIDL VISS server deployment is VISS HAL VISSHAL Vehicle HAL not limited to Android VISSHAL WebSocket VISS only. E. g. can live also on VISS server other partition in multi OS HIDL HIDL solution with interface VISS WebSocket HIDL exposed. Any adaptations HIDL Genivi/vendor to server deployment are VISSHAL system component required from VISS HAL VehicleHAL VTS component only. HIDL VehicleHAL VISSHAL HIDL

8 29 October 2019 |. Copyright © GENIVI Alliance 2019 Architectural proposal II (via Vehicle HAL)

cmp Architectural proposal II (via Vehicle HAL)

Contribution CE Device Backend Head Unit (on-board) Google Applications Genivi «App» OEM / Tier1 «App» «App» «App» App 1 APP 1 App 1 App n

CTS WebSocket WebSocket

GraphQL schema Android Framework layer CarAPI GraphQL schema Java API CarAIDL Car API CTS and VTS test suites VSS tree is a base for the are required for Android AIDL GraphQL schema certification GraphQL schema

VSS tree: Car Service WebSocket ⦁ Vehicle.Body.Hood Virtual ECU (on-board) ⦁ Vehicle.Body.Hood.IsOpen AIDL ⦁ Vehicle.Body.Trunk CarAIDL GraphQL Server ⦁ Vehicle.Body.Trunk.IsLocked VTS HIDL ⦁ Vehicle.Body.Trunk.IsOpen VSS tree is a base for the data structure. ⦁ Vehicle.Body.Windshield VehicleHAL ⦁ Vehicle.Body.Windshield.Front ⦁ Vehicle.Body.Windshield.Front.Wiping e.g. create table trunk OEM Properties VehicleHAL ⦁ Vehicle.Body.Windshield.Front.Wiping.Status Vendor partition Provides properties defined and ⦁ Vehicle.Body.Windshield.Front.Heating required by Android in Vehicle HIDL ⦁ Vehicle.Body.Windshield.Front.Heating.Status HIDL HIDL spec. and complete set of properties provided by VSS data tree Vehicle HAL

VSS Feeder VSS Database This component is responsible to read VSS tree is a base for the android Vehicle data from car network in an OEM specific HAL property extension. way and feed this data to the VSS Database. e.g. Vehicle_Body_Hood_IsOpen

9 29 October 2019 |. Copyright © GENIVI Alliance 2019 Architectural proposal III (via GraphQL Server)

Up NO da T in te E: a d v cmp Architectural proposal III (via GraphQL Server) la e te rsi r s on Contribution lid CE Device Backend Head Unit (on-board) e Google Applications Genivi Comments: «App» OEM / Tier1 «App» GraphQL schema «App» «App» App 1 APP 1 App 1 App n (changed in later version)

Socket CTS GraphQL could be any WebSocket WebSocket protocol GraphQL schema Android Framework layer CarAPI ● GraphQL schema Java API Unix Socket = can be

Car API CarAIDL network socket CTS and VTS test suites VSS tree is a base for the are required for Android AIDL GraphQL schema certification GraphQL schema

VSS tree: Car Service WebSocket ⦁ Vehicle.Body.Hood Virtual ECU (on-board) ⦁ Vehicle.Body.Hood.IsOpen AIDL ⦁ Vehicle.Body.Trunk CarAIDL GraphQL Server ⦁ Vehicle.Body.Trunk.IsLocked VTS HIDL ⦁ Vehicle.Body.Trunk.IsOpen GraphQL schema VSS tree is a base for the data structure. ⦁ Vehicle.Body.Windshield VehicleHAL ⦁ Vehicle.Body.Windshield.Front Unix Scket ⦁ Vehicle.Body.Windshield.Front.Wiping e.g. create table trunk VehicleHAL ⦁ Vehicle.Body.Windshield.Front.Wiping.Status Vendor partition Provides properties defined and ⦁ Vehicle.Body.Windshield.Front.Heating required by Android in Vehicle HIDL ⦁ Vehicle.Body.Windshield.Front.Heating.Status HIDL spec. and complete set of properties provided by VSS data tree Vehicle HAL

VSS Feeder This component is responsible to read VSS Database data from car network in an OEM specific way and feed this data to the VSS Database.

10 29 October 2019 |. Copyright © GENIVI Alliance 2019 Following architectural designees have bean made based on the discussions during the Android Technical Summit in US.

11 29 October 2019 |. Copyright © GENIVI Alliance 2019 Architectural proposal I (via Vehicle HAL)

cmp Architectural proposal I (via Vehicle HAL)

Contribution Head Unit (on-board) Google Application layer Genivi OEM / Tier1 «App» «App» App 1 App n

CTS

Framework layer CarAPI Java API CarAIDL Car API CTS and VTS test suites are required for Android AIDL certification

VSS tree: Car Service ⦁ Vehicle.Body.Hood Virtual ECU (on-board) ⦁ Vehicle.Body.Hood.IsOpen AIDL ⦁ Vehicle.Body.Trunk CarAIDL ⦁ Vehicle.Body.Trunk.IsLocked VTS HIDL ⦁ Vehicle.Body.Trunk.IsOpen ⦁ Vehicle.Body.Windshield VSS tree is a base for the data structure. VehicleHAL ⦁ Vehicle.Body.Windshield.Front ⦁ Vehicle.Body.Windshield.Front.Wiping e.g. create table trunk OEM Properties VehicleHAL ⦁ Vehicle.Body.Windshield.Front.Wiping.Status HAL layer Provides properties defined and ⦁ Vehicle.Body.Windshield.Front.Heating required by Android in Vehicle HIDL ⦁ Vehicle.Body.Windshield.Front.Heating.Status HIDL HIDL spec. and complete set of properties provided by VSS data tree Vehicle HAL VSS Feeder VSS Database

VSS tree is a base for the android Vehicle This component is responsible to read HAL property extension. data from car network in an OEM specific way and feed this data to the VSS e.g. Vehicle_Body_Hood_IsOpen Database.

12 29 October 2019 |. Copyright © GENIVI Alliance 2019 Architectural proposal II (via Data Server) Comments: ● One idea was proposed that a helper class in Android Framework layer implements the network protocol instead (App is calling a Framework API)

● cmp Architectural proposal II (via Data Server) ...but bundling this network binding code with the app was also considered OK by some Defined by CE Device Backend Head Unit (on-board) Google Application layer Genivi OEM / Tier1 «App» «App» «App» «App» App 1 APP 1 App 1 App n

Socket CTS WebSocket WebSocket

Framework layer CarAPI Java API CarAIDL Car API CTS and VTS test suites VSS tree is a base for the are required for Android AIDL GraphQL schema certification

VSS tree: WebSocket Car Service ⦁ Vehicle.Body.Hood Virtual ECU (same / different ECU) ⦁ Vehicle.Body.Hood.IsOpen Data Server AIDL ⦁ Vehicle.Body.Trunk CarAIDL ⦁ Vehicle.Body.Trunk.IsLocked VTS HIDL ⦁ Vehicle.Body.Trunk.IsOpen VSS tree is a base for the data structure. Socket ⦁ Vehicle.Body.Windshield VehicleHAL ⦁ Vehicle.Body.Windshield.Front ⦁ Vehicle.Body.Windshield.Front.Wiping e.g. create table trunk VehicleHAL ⦁ Vehicle.Body.Windshield.Front.Wiping.Status HAL layer Provides properties defined and ⦁ Vehicle.Body.Windshield.Front.Heating required by Android in Vehicle HIDL ⦁ Vehicle.Body.Windshield.Front.Heating.Status HIDL spec. and complete set of properties provided by VSS data tree VSS Feeder VSS Database Vehicle HAL

This component is responsible to read data from car network in an OEM specific way and feed this data to the VSS Database.

13 29 October 2019 |. Copyright © GENIVI Alliance 2019 Architectural proposal III (via Global SomeIP Service)

cmp Architectural proposal III (via Gloabal SomeIP Service)

Defined by Head Unit (on-board) Google Application layer Genivi OEM / Tier1 App A «App» «App» «App» App B App 1 App n

CTS

Framework layer CarAPI Java API Java API Java API CarAIDL Manager A Manager B Car API CTS and VTS test suites are required for Android AIDL AIDL AIDL certification

Generic SomeIP Car Service service AIDL AIDL AIDL CarAIDL VTS SomeIP HIDL ECU 1 .. N VehicleHAL

VehicleHAL HAL layer Provides properties defined and required by Android in Vehicle HIDL SomeIP SomeIP HIDL spec. and complete set of properties provided by VSS data tree Service A Service B Vehicle HAL

VSS tree is a base for the android Vehicle HAL property extension.

e.g. Vehicle_Body_Hood_IsOpen

14 29 October 2019 |. Copyright © GENIVI Alliance 2019 Vehicle Hardware Abstraction Layer (VHAL) Design

Questions

• For accessing vehicle data, what are the implications of bypassing Android architecture ? • Impact on CTS, VTS? • TREBLE? • What if Google keeps adapting the properties. • What are the alternatives to VSS Data model and interfaces to access it ? • How do we address the reuse from existing systems. • What is the process to define complex data types to be used in data model? • What are the concerns on Data access

15 29 October 2019 |. Copyright © GENIVI Alliance 2019