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ı çağırabilir.
dump() VehicleHal.dump() adlı otel ile aynı
checkHealth() VehicleHal.get() sonucunu 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 kaynağından oluşturulan tüm türler için bir üst bilgi 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.

    Sonuç olarak, ihtiyacınız olan türler için tüm başlık dosyalarını eklemeniz gerekir. VehicleHalUtils kitaplığındaki VehicleHalTypes.h yardımcı dosyası, yaygın türlerin çoğunu içerir.

  2. Bunun yerine ... Kullanım
    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ğıdaki durumlar haricinde 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şaret alanı, birden fazla UserInfo.USER_FLAG_XXX bitine veya birlikte değerine sahip bir tam sayıdır.
    • VehiclePropValue'daki RawValue, RawPropValue olarak yeniden adlandırıldı
    • RawValue'daki bytes, byteValues olarak yeniden adlandırıldı