Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Menerapkan USB HAL

Android 8.0 Rilis bergerak penanganan USB perintah dari init script dan menjadi USB daemon asli untuk konfigurasi yang lebih baik dan kehandalan kode. Untuk fungsi Gadget konfigurasi, init script (pemicu properti) yang digunakan untuk melakukan operasi gadget khusus perangkat.

Dalam rilis sebelumnya, konfigurasi khusus perangkat tersebut dicapai melalui perangkat khusus init script (menggunakan pemicu properti). Pindah ke desain Hardware Abstraction Layer (HAL) menghasilkan implementasi yang jauh lebih bersih yang memecahkan masalah ini:

  1. Operasi seperti menulis ke node sysfs kernel dapat gagal tetapi tidak dapat disebarkan kembali ke kode kerangka kerja yang menyetel pemicu properti. Akibatnya, kerangka kerja salah mengasumsikan operasi telah berhasil meskipun mereka diam-diam gagal.
  2. init script memiliki sejumlah operasi yang dapat dieksekusi.

Rilis Android 12 menambahkan dukungan USB Gadget HAL untuk Network Control Models (NCM) dan panggilan API yang mengembalikan nomor versi HAL dan kecepatan USB. Untuk informasi lebih lanjut tentang API panggilan tersedia melalui HAL USB, lihat yang android.hardware.usb ringkasan paket .

HAL dan Treble

Perangkat khusus init script yang digunakan sebagai substitusi untuk lapisan HAL untuk melakukan operasi USB khusus perangkat. USB (melalui ADB) adalah antarmuka utama untuk men-debug masalah sistem. Memiliki daemon asli untuk melakukan konfigurasi USB menghilangkan ketergantungan pada kode kerangka kerja sehingga meskipun kerangka kerja mogok, USB harus dijalankan.

Di bawah Treble model yang juga diperkenalkan di Android 8.0, semua HAL terisolasi dari layanan Sistem dan diminta untuk berjalan di daemon asli mereka sendiri. Ini menghilangkan persyaratan untuk memiliki daemon USB eksklusif karena lapisan HAL berfungsi ganda dengan baik sebagai daemon USB.

Implementasi HAL default menangani semua perangkat pra-Android 8.0. Oleh karena itu, tidak akan ada pekerjaan khusus perangkat untuk perangkat pra-Android 8.0. Android 8.0 menggunakan antarmuka HAL untuk menanyakan status port USB dan untuk melakukan peran data dan pertukaran peran daya.

Penerapan

Antarmuka USB HAL baru perlu diterapkan pada setiap peluncuran perangkat di Android 8.0. Implementasi default harus menangani perangkat pra-Android 8.0. Implementasi standar cukup jika perangkat menggunakan dual_role_usb kelas status laporan tipe-c pelabuhan. Perubahan kecil mungkin diperlukan dalam skrip USB khusus perangkat untuk mentransfer kepemilikan node typc-c ke sistem.