Aby przeprowadzić migrację istniejącej implementacji VHAL HIDL do AIDL VHAL,
użyj struktury implementacji referencyjnej AIDL
do zaimplementowania interfejsu 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() |
Tak samo jak VehicleHal.listProperties() |
getValues(callback, requests) |
Może wywoływać VehicleHal.get() w przypadku każdego żądania i wywoływać wywołania zwrotne.
|
dump() |
Tak samo jak VehicleHal.dump() |
checkHealth() |
Może zwracać VehicleHal.get() |
registerPropertyChangeCallback() |
Podobne do ustawienia VehicleHal.mOnHalEvent |
Różnice między typami w AIDL
Podczas migracji z HIDL VHAL do 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 jeden plik nagłówkowy dla każdego typu. Na przykład,VehiclePropValue.hzVehiclePropValue.aidl.W rezultacie musisz uwzględnić wszystkie pliki nagłówkowe dla potrzebnych typów. Plik pomocniczy,
VehicleHalTypes.hw biblioteceVehicleHalUtilszawiera większość typowych typów. - Wszystkie typy zdefiniowane w
types.halsą takie same w AIDL z wyjątkiem :SubscribeFlagsjest usuwany, ponieważ nie jest używany, ponieważonPropertySetjest usuwanyUserFlagsjest teraz zdefiniowany wUserInfo.aidli powinien być zdefiniowany jako flaga, a nie jako wyliczenie. Pole flagi użytkownika to liczba całkowita, która ma wieleUserInfo.USER_FLAG_XXXbitów.RawValuewVehiclePropValuejest zmieniana naRawPropValue.byteswRawValuejest zmieniana nabyteValues.
| Zamiast ... | Użyj |
|---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |