HIDL VHAL taşıma rehberi

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

Mevcut HIDL uygulaması da HIDL referans uygulamasını takip ediyorsa satıcı VehicleHal sınıfını uygulamıştır. IVehicleHardware, VehicleHal ile çok benzerdir.

HIDL VHAL AIDL VHAL
getAllPropertyConfigs() VehicleHal.listProperties() ile aynı
getValues(callback, requests) Her istek için VehicleHal.get()'ı ve geri çağırmaları çağırabilir.
dump() VehicleHal.dump() ile aynı
checkHealth() VehicleHal.get() öğesini döndürebilir
registerPropertyChangeCallback() VehicleHal.mOnHalEvent ayarına benzer

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

HIDL VHAL'den AIDL VHAL'ye 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 üstbilgi dosyası (types.h) oluşturur. AIDL, her tür için bir üstbilgi dosyası oluşturur. Örneğin, VehiclePropValue.aidl adresinden VehiclePropValue.h.

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

  2. Şunu kullanmayın: 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, AIDL'de aşağıdakiler hariç aynıdır:
    • onPropertySet kaldırıldığı için kullanılmayan SubscribeFlags kaldırıldı
    • UserFlags artık UserInfo.aidl içinde tanımlanıyor ve enum yerine işaret olarak tanımlanması gerekiyor. Kullanıcı işareti alanı, birden fazla UserInfo.USER_FLAG_XXX bit-or'a sahip bir tam sayıdır.
    • VehiclePropValue içindeki RawValue, RawPropValue olarak yeniden adlandırıldı
    • RawValue içindeki bytes, byteValues olarak yeniden adlandırıldı