Aby przenieść istniejącą implementację HIDL VHAL do AIDL VHAL, użyj struktury implementacji referencyjnej AIDL, aby zaimplementować interfejs IVehicleHardware
.
Jeśli obecna 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ć funkcje oddzwaniania.
|
dump() |
Taka sama cena jak w hotelu VehicleHal.dump() |
checkHealth() |
Możesz zwrócić VehicleHal.get() |
registerPropertyChangeCallback() |
Podobnie jak w przypadku 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łówkowy (
types.h
) dla wszystkich typów wygenerowanych ztypes.hal
. AIDL generuje 1 plik nagłówkowy dla każdego typu. Na przykładVehiclePropValue.h
zVehiclePropValue.aidl
.W związku z tym musisz uwzględnić wszystkie pliki nagłówkowe dla potrzebnych typów. Plik pomocniczy
VehicleHalTypes.h
wVehicleHalUtils
bibliotece zawiera większość typowych typów. - Wszystkie typy zdefiniowane w
types.hal
są takie same w AIDL z wyjątkiem:SubscribeFlags
zostało usunięte, ponieważ nie jest używane, ponieważ usuniętoonPropertySet
- Wartość
UserFlags
jest teraz zdefiniowana w poluUserInfo.aidl
i powinna być zdefiniowana jako flaga zamiast wyliczenia. Pole flagi użytkownika to liczba całkowita, która ma wieleUserInfo.USER_FLAG_XXX
bitów połączonych operacją OR. RawValue
wVehiclePropValue
zmieniono nazwę naRawPropValue
bytes
wRawValue
zmienił(a) nazwę nabyteValues
Zamiast ... | Użyj |
---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |