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).