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ı 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 benzer.

HIDL VHAL AIDL VHAL
getAllPropertyConfigs() VehicleHal.listProperties() adlı otel ile aynı
getValues(callback, requests) Her istek için VehicleHal.get()'ı arayabilir ve geri aramaları arayabilir.
dump() VehicleHal.dump() adlı otel 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 başlık 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. VehicleHalTypes.h kitaplığındaki bir yardımcı dosya, VehicleHalUtils yaygın türlerin çoğunu içerir.

  2. ... 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, 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ı