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ęto- onPropertySet
- 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.
- RawValuew- VehiclePropValuezmieniono nazwę na- RawPropValue
- bytesw- RawValuezmienił(a) nazwę na- byteValues
 
| Zamiast ... | Użyj | 
|---|---|
| hidl_vec | std::vector | 
| hidl_string | std::string | 
| android::sp | std::shared_ptr | 
| android::wp | std::weak_ptr | 
