USB HAL'ı uygulama

Android 8.0 sürümü, daha iyi yapılandırma ve kod güvenilirliği için USB komutlarının işlenmesini init komut dosyalarından çıkararak yerel bir USB arka plan programına taşır. Gadget işlevi yapılandırması için, cihaza özgü gadget işlemlerini gerçekleştirmek için init betikleri (özellik tetikleyicileri) kullanılır.

Önceki sürümlerde, bu cihaza özgü yapılandırmalar, cihaza özgü init komut dosyaları (özellik tetikleyicileri kullanılarak) aracılığıyla elde init . Bir Donanım Soyutlama Katmanı (HAL) tasarımına geçmek, bu sorunları çözen çok daha temiz bir uygulama ile sonuçlanır:

  1. Çekirdek sysfs düğümlerine yazma gibi işlemler başarısız olabilir, ancak özellik tetikleyicisini ayarlayan çerçeve koduna geri yayılamaz. Sonuç olarak, çerçeveler sessizce başarısız olsalar bile işlemlerin başarılı olduğunu varsayar.
  2. init betiklerinde yürütülebilecek sınırlı sayıda işlem vardır.

HAL ve Tiz

Aygıta özgü init komut dosyaları, aygıta özgü USB işlemlerini gerçekleştirmek için HAL katmanlarının yerine kullanılmıştır. USB (ADB aracılığıyla), sistem sorunlarının giderilmesi için birincil arabirimdir. USB yapılandırmasını gerçekleştirmek için yerel bir arka plan programına sahip olmak, çerçeve koduna olan bağımlılığı ortadan kaldırır, bu nedenle çerçeve çökse bile USB çalışıyor olmalıdır.

Android 8.0'da da sunulan Treble modeli kapsamında, tüm HAL'ler Sistem hizmetlerinden izole edilmiştir ve kendi yerel arka plan programlarında çalışması gerekir. Bu, HAL katmanı bir USB arka plan programı olarak hoş bir şekilde ikiye katlandığından, özel bir USB arka plan programına sahip olma gerekliliğini ortadan kaldırır.

Varsayılan HAL uygulaması, tüm Android 8.0 öncesi cihazlarla ilgilenir. Bu nedenle, Android 8.0 öncesi cihazlar için cihaza özel herhangi bir çalışma olmayacaktır. Android 8.0, USB bağlantı noktalarının durumunu sorgulamak ve veri rolü ve güç rolü değişimlerini gerçekleştirmek için HAL arayüzünü kullanır.

Uygulama

Android 8.0'da başlatılan her cihazda yeni USB HAL arayüzünün uygulanması gerekir. Varsayılan uygulama, Android 8.0 öncesi cihazlara dikkat etmelidir. Aygıt, type-c bağlantı noktası durumunu bildirmek için dual_role_usb sınıfını kullanıyorsa, varsayılan uygulama yeterlidir. Typc-c düğümlerinin sahipliğini sisteme aktarmak için cihaza özgü USB komut dosyalarında önemsiz değişiklikler gerekebilir.