HAL modüllerini dönüştürme

Mevcut HAL modüllerini HIDL HAL modüllerine güncellemek için hardware/libhardware/include/hardware üstbilgisi.

c2hal kullan

İlgili içeriği oluşturmak için kullanılan c2hal. aracını kullanarak gerekli manuel iş yükünü azaltabilir anlamına gelir. Örneğin, NFC için bir HIDL .hal dosyası oluşturmak için HAL:

make c2hal
c2hal -r android.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport -p android.hardware.nfc@1.0 hardware/libhardware/include/hardware/nfc.h

Bu komutlar hardware/interfaces/nfc/1.0/ konumuna dosya ekler. Koşu hardware/interfaces/update-makefiles.sh, kalkış: $ANDROID_BUILD_TOP dizini de gerekli Makefile'ı HAL'ye ekler. Bu bölümden HAL'yi tamamen dönüştürmek için manuel değişiklikler yapmanız gerekir.

c2hal etkinlikleri

c2hal komutunu çalıştırdığınızda başlık dosyasındaki her şey aktarılır .hal dosyaya eklendi.

c2hal, her struct'ı ayrı bir arayüz dosyasına dönüştürür. Örneğin, alloc_device_t, IAllocDevice HAL modülü (dosyada IAllocDevice.hal).

Diğer tüm veri türleri bir types.hal dosyasına kopyalanır. Sterlin tanımlamaları, enum'lara taşınır ve öğeler HIDL'nin bir parçası değil ya da değil dönüştürülebilir (statik işlev bildirimleri gibi) yorumlara kopyalanır "NOTE" metniyle işaretlendi.

Manuel etkinlikler

c2hal aracı, karşılaştığında ne yapacağını bilemiyor ve oluşturabilirsiniz. Örneğin, HIDL'de ham işaretçi kavramı yoktur; nedeni: Bu durumda c2hal, başlık dosyalarında bir işaretçiyle karşılaştığında işaretleyicinin bir dizi mi yoksa bir diziye ait mi başka bir nesne olarak işaretleyin. Boş işaretçiler de benzer şekilde opaktır.

int reserved[7] gibi alanlar, sırasında manuel olarak kaldırılmalıdır HIDL'ye geçiş. Döndürülen değerin adı gibi öğeler, bir şekilde güncellendi. Örneğin, yatırım getirisini otomatik olarak oluşturulan NFC'deki write gibi bir yöntem parametresi int32_t write_ret - Status status (burada Status, olası NFC durumlarını içeren yeni bir sıralamadır).

HAL'yi uygulama

HAL'nizi temsil edecek .hal dosya oluşturduktan sonra, C++ ve Java (HAL, Java'da desteklenmeyen bir özellik kullanmıyorsa). İlgili içeriği oluşturmak için kullanılan ./hardware/interfaces/update-makefiles.sh komut dosyası, hardware/interfaces bölgesinde bulunan HAL'ler için oluşturma dosyası oluşturma dizinine ekleyin (başka konumlardaki HAL'ler için komut dosyasını güncellemeniz yeterlidir).

Yapma dosyaları güncel olduğunda, başlık dosyaları oluşturmaya ve yöntemleri uygulayabilirsiniz. Oluşturulan arayüzün uygulanmasıyla ilgili ayrıntılar için HIDL C++ (C++ için uygulamaları) veya HIDL Java (Java uygulamaları için).