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.hzVehiclePropValue.aidl.W związku z tym musisz uwzględnić wszystkie pliki nagłówkowe dla potrzebnych typów. Plik pomocniczy
VehicleHalTypes.hwVehicleHalUtilsbibliotece zawiera większość typowych typów. - Wszystkie typy zdefiniowane w
types.halsą takie same w AIDL z wyjątkiem:SubscribeFlagszostało usunięte, ponieważ nie jest używane, ponieważ usuniętoonPropertySet- Wartość
UserFlagsjest teraz zdefiniowana w poluUserInfo.aidli powinna być zdefiniowana jako flaga zamiast wyliczenia. Pole flagi użytkownika to liczba całkowita, która ma wieleUserInfo.USER_FLAG_XXXbitów połączonych operacją OR. RawValuewVehiclePropValuezmieniono nazwę naRawPropValuebyteswRawValuezmienił(a) nazwę nabyteValues
| Zamiast ... | Użyj |
|---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |