Aby przenieść istniejące wdrożenie VHAL HIDL do VHAL AIDL, użyj struktury wzorcowego wdrożenia AIDL, aby zaimplementować interfejs IVehicleHardware
.
Jeśli istniejąca implementacja HIDL jest zgodna z implementacją referencyjną HIDL, dostawca zaimplementował klasę VehicleHal
. Parametr IVehicleHardware
jest bardzo podobny do VehicleHal
.
HIDL VHAL | AIDL VHAL |
---|---|
getAllPropertyConfigs() |
Taka sama cena jak w hotelu VehicleHal.listProperties() |
getValues(callback, requests) |
Może wywoływać funkcję VehicleHal.get() w przypadku każdej prośby i może wywoływać funkcję wywołania zwrotnego.
|
dump() |
Taka sama cena jak w hotelu VehicleHal.dump() |
checkHealth() |
Może zwrócić VehicleHal.get() |
registerPropertyChangeCallback() |
Podobne do ustawienia VehicleHal.mOnHalEvent |
Różnice w typach w AIDL
Podczas przechodzenia z HIDL VHAL na AIDL VHAL weź pod uwagę te różnice.
- HIDL generuje jeden plik nagłówka (
types.h
) dla wszystkich typów wygenerowanych ztypes.hal
. AIDL generuje jeden plik nagłówka dla każdego typu. Na przykład:VehiclePropValue.h
z witrynyVehiclePropValue.aidl
.W rezultacie musisz uwzględnić wszystkie pliki nagłówka dla potrzebnych typów. Plik pomocniczy
VehicleHalTypes.h
w biblioteceVehicleHalUtils
zawiera większość typów plików. - Wszystkie typy zdefiniowane w funkcji
types.hal
są takie same w AIDL z wyjątkiem tych typów:- Element
SubscribeFlags
został usunięty, ponieważ nie jest używany, ponieważ elementonPropertySet
został usunięty - Element
UserFlags
jest teraz zdefiniowany wUserInfo.aidl
i powinien być zdefiniowany jako flaga, a nie wyliczenie. Pole flagi użytkownika to liczba całkowita, która zawiera wiele bitowych operacji OR.UserInfo.USER_FLAG_XXX
- Użytkownik
RawValue
wVehiclePropValue
zmienił nazwę naRawPropValue
- Nazwa
bytes
w:RawValue
została zmieniona nabyteValues
- Element
Zamiast ... | Użyj |
---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |