Aby przenieść istniejące wdrożenie VHAL HIDL do wdrożenia 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
. 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żdego żądania i może wywoływać funkcję obsługi wywołań zwrotnych.
|
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 migracji 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 po jednym pliku nagłówka dla każdego typu. Na przykład:VehiclePropValue.h
zVehiclePropValue.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
types.hal
są takie same w AIDL z wyjątkiem:- Element
SubscribeFlags
został usunięty, ponieważ nie jest używany, ponieważ elementonPropertySet
został usunięty - Wartość
UserFlags
jest teraz zdefiniowana w poluUserInfo.aidl
i powinna być zdefiniowana jako flaga zamiast typu enum. 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
- Użytkownik
bytes
wRawValue
zmienił nazwę nabyteValues
- Element
Zamiast | Użyj |
---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |