USB HAL'ı uygulama

USB taşıma Android 8.0 sürüm hamle dışarı komutları init komut ve daha iyi yapılandırma ve kod güvenilirlik için bir yerli USB cini içine. Gadget fonksiyonu yapılandırma için, init betikleri (mülkiyet tetikler) cihaza özel gadget işlemlerini gerçekleştirmek için kullanılır.

Önceki yayınların, bu cihaza özgü yapılandırmaları cihaza özgü ile elde edilmiştir init (özelliği tetikleyiciler kullanılarak) komut dosyaları. Donanım Soyutlama Katmanı (HAL) tasarımına geçmek, şu sorunları çözen çok daha temiz bir uygulamayla 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 olmalarına rağmen, işlemlerin başarılı olduğunu yanlış bir şekilde varsayar.
  2. init komut infaz edilmesi operasyonların sınırlı sayıda var.

Android 12 sürümü, hem HAL sürüm numarasını hem de USB hızını döndüren Ağ Denetim Modelleri (NCM) ve API çağrıları için USB Gadget HAL desteği ekler. API hakkında daha fazla bilgi USB HAL aracılığıyla kullanılabilir çağırır için bkz android.hardware.usb paketi özeti .

HAL ve Tiz

Cihaza özel init HAL tabakalar cihaza özgü bir USB işlemleri gerçekleştirmek için komut, bir ikame olarak kullanılmıştır. USB (ADB aracılığıyla), sistem sorunlarının hatalarını ayıklamak 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ışır durumda olmalıdır.

Altında Tiz da Android 8.0 tanıtıldı modelin, HAL'lere tüm sistem hizmetlerinden izole edilir ve kendi yerli cinleri çalıştırmak için gereklidir. Bu, HAL katmanı bir USB arka plan programı olarak güzel bir şekilde ikiye katlandığından özel bir USB arka plan programı gereksinimini 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 bir çalışma olmayacaktı. Android 8.0, USB bağlantı noktalarının durumunu sorgulamak ve veri rolü ile güç rolü takaslarını gerçekleştirmek için HAL arabirimini kullanır.

uygulama

Android 8.0'da başlatılan her cihazda yeni USB HAL arabiriminin uygulanması gerekir. Varsayılan uygulama, Android 8.0 öncesi cihazlarla ilgilenmelidir. Cihaz kullanıyorsa varsayılan uygulama yeterlidir dual_role_usb rapor türü-c liman statüsüne sınıfı. Typc-c düğümlerinin sahipliğini sisteme aktarmak için cihaza özel USB komut dosyalarında önemsiz değişiklikler gerekebilir.