HIDL VHAL taşıma rehberi

Mevcut bir HIDL VHAL uygulamasını AIDL VHAL'e taşımak için IVehicleHardware arayüzünü uygulamak üzere AIDL referans uygulamasını kullanın.

Mevcut HIDL uygulaması da HIDL referans uygulamasını izliyorsa tedarikçi firma VehicleHal sınıfını uygulamıştır. IVehicleHardware, VehicleHal'a çok benziyor.

HIDL VHAL AIDL VHAL
getAllPropertyConfigs() VehicleHal.listProperties() adlı otel ile aynı
getValues(callback, requests) Her istek için VehicleHal.get()'ü ve geri aramaları arayabilir.
dump() VehicleHal.dump() adlı otel ile aynı
checkHealth() VehicleHal.get() değerini döndürebilir
registerPropertyChangeCallback() VehicleHal.mOnHalEvent ayarına benzer

AIDL'deki tür farklılıkları

HIDL VHAL'den AIDL VHAL'e geçiş yaparken bu farklılıkları göz önünde bulundurun.

  1. HIDL, types.hal dosyasından oluşturulan tüm türler için bir başlık dosyası (types.h) oluşturur. AIDL her tür için bir başlık dosyası oluşturur. Örneğin, VehiclePropValue.aidl'dan VehiclePropValue.h.

    Bu nedenle, ihtiyacınız olan türlerin tüm üstbilgi dosyalarını eklemeniz gerekir. VehicleHalUtils kitaplığındaki VehicleHalTypes.h yardımcı dosyası, yaygın türlerin çoğunu içerir.

  2. Bunun yerine ... Kullan
    hidl_vec std::vector
    hidl_string std::string
    android::sp std::shared_ptr
    android::wp std::weak_ptr
  3. types.hal içinde tanımlanan tüm türler, aşağıdakiler hariç AIDL'de aynıdır:
    • onPropertySet kaldırıldığı için kullanılmadığı için SubscribeFlags kaldırılır
    • UserFlags artık UserInfo.aidl içinde tanımlanıyor ve enum yerine işaret olarak tanımlanmalıdır. Kullanıcı işareti alanı, birden fazla UserInfo.USER_FLAG_XXX bit-ve operatörünün birlikte kullanıldığı bir tam sayıdır.
    • VehiclePropValue'daki RawValue, RawPropValue olarak yeniden adlandırılır
    • RawValue'daki bytes, byteValues olarak yeniden adlandırıldı