Merge "Add README files to VHAL codebase."

This commit is contained in:
TreeHugger Robot
2022-06-04 02:12:28 +00:00
committed by Android (Google) Code Review
5 changed files with 197 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
# Vehicle Hardware Abstraction Layer (VHAL)
---
This directory stores the VHAL interface definition and VHAL reference
implementation.
## 2.0 (deprecated)
HIDL based VHAL interface and reference implementation.
## aidl
AIDL based VHAL interfadce and reference implementation.
## proto
Protobuf used to pass message between emulator VHAL and emulator.
## tools
Dev tools related to VHAL.
## vts
VTS test for VHAL. The VTS test works for both AIDL and HIDL VHAL
implementation. Vendor implementation of VHAL must passes VTS.

View File

@@ -0,0 +1,23 @@
# AIDL Vehicle Hardware Abstraction Layer (VHAL)
---
This directory stores the AIDL VHAL interface and reference implementation.
## aidl_api
Auto-generated current and previous versions of AIDL VHAL api.
## aidl_test
Contains a test to test that all HIDL VHAL properties are supported in
AIDL VHAL.
## android
Contains AIDL VHAL interface definition. The main interface file is
`android/hardware/automotive/vehicle/IVehicle.aidl`.
## impl
Reference implementation for AIDL VHAL and useful libraries for implementing
vendor AIDL VHAL.

View File

@@ -0,0 +1,58 @@
# AIDL VHAL libraries and reference implementation.
---
This directory stores the libraries useful for implementing vendor AIDL VHAL.
This directory also stores a reference fake implementation for AIDL VHAL.
## default_config
Stores the default vehicle property configurations for reference vehicle HAL.
Vendor implementation could copy this library but must update the configuration
to meet their own requirements, e.g. enable or disable certain properties or
update the initial value for certain properties.
## fake_impl
Contains libraries used specifically for the fake reference VHAL implementation.
These libraries are for test only and must not be directly used for vendor
VHAL implementation.
These libraries contain test-spcific logic and must not run directly on a real
vehicle.
## grpc
Stores code for GRPC based VHAL implementation.
## hardware
Defines an interface `IVehicleHardware.h` which vendor must implement for
vehicle-specific logic if they want to follow our reference VHAL design.
## proto
Stores Some protobuf files translated from AIDL VHAL interface types. These
files are used in GRPC VHAL implementation.
## utils
Defines a library `VehicleHalUtils` which provides useful utility functions for
VHAL implementation. Vendor VHAL could use this library.
## vhal
Defines a library `DefaultVehicleHal` which provides generic logic for all VHAL
implementations (including reference VHAL). Vendor VHAL implementation could
use this library, along with their own implementation for `IVehicleHardware`
interface.
Also defines a binary `android.hardware.automotive.vehicle@V1-default-service`
which is the reference VHAL implementation. It implements `IVehicle.aidl`
interface. It uses `DefaultVehicleHal`, along with `FakeVehicleHardware`
(in fake_impl). It simulates the vehicle bus interaction by using an
in-memory map. Meaning that all properties (except for some special ones) are
just written into a hash map and read from a hash map without relying on any
hardware. As a result, the reference implementation can run on emulator or
any host environment.
Vendor must not directly use the reference implementation for a real vehicle.

View File

@@ -0,0 +1,28 @@
# Fake reference AIDL VHAL implementation libraries
---
This directory stores libraries for implementing a fake reference AIDL VHAL.
WARNING: All the libraries here are for TEST ONLY.
## GeneratorHub
Defines a library `FakeVehicleHalValueGenerators` that could generate fake
vehicle property values for testing.
## hardware
Defines a fake implementation for device-specifc interface `IVehicleHardware`:
`FakeVehicleHardware`. This implementation uses a in-memory map for storing
property values and does not communicate with or depending on any specific
vehicle bus.
## obd2frame
Defines a library `FakeObd2Frame` that generates fake OBD2 frame for OBD2
properties.
## userhal
Defines a library `FakeUserHal` that emulates a real User HAL behavior by
parsing debug commands.

View File

@@ -0,0 +1,62 @@
# Utility classes for VHAL implementation
---
This directory stores utility classes for VHAL implementation. Vendor
implementation could use utility classes from `common` folder in their
VHAL implementation.
## common
Defines common utility libraries.
### ConcurrentQueue
Provides a thread-safe concurrent queue object. Useful for adding object to
a queue in one thread (usually binder thread) and handle the objects in a
separate handler thread.
### ParcelableUtils
Provides functions to convert between a regular parcelable and a
`LargeParcelabe`.
A `LargeParcelable` is a parcelable that marshals the payload
into a shared memory file if the payload is too large to pass across binder.
It is used to pass large data across binder. Before sending the data, VHAL
impl should convert a regular parcelabe to a `LargeParcelable`. After receving
data, VHAL impl should convert a `LargeParcelable` back to regular parcelabe.
### PendingRequestPool
Defines A class for managing pending requests and automatically call timeout
callback if the request timed-out.
### PropertyUtils
Defines some useful constants.
### RecurrentTimer
Defines a thread-safe recurrent timer that can call a function periodically.
### VehicleHalTypes
Provides a header file that includes many commonly used header files. Useful
when you are using multiple types defined in VHAL interface.
### VehicleObjectPool
Defines a reusable in-memory pool for `VehiclePropValue`.
### VehiclePropertyStore
Defines an in-memory map for storing vehicle properties. Allows easier insert,
delete and lookup.
### VehicleUtils
Defines many useful utility functions.
## test
Defines utility libraries for test only.