تنفيذ USB HAL

يعمل إصدار Android 8.0 على نقل معالجة أوامر USB من نصوص init النصية إلى برنامج خفي USB أصلي لتهيئة وموثوقية أكواد أفضل. بالنسبة لتكوين وظيفة الأداة الذكية ، يتم استخدام البرامج النصية init (مشغلات الخاصية) لإجراء عمليات الأداة الخاصة بالجهاز.

في الإصدارات السابقة ، تم تحقيق هذه التكوينات الخاصة بالجهاز من خلال البرامج النصية الخاصة init (باستخدام مشغلات الخاصية). يؤدي الانتقال إلى تصميم طبقة تجريد الأجهزة (HAL) إلى تنفيذ أكثر وضوحًا يحل هذه المشكلات:

  1. قد تفشل عمليات مثل عمليات الكتابة إلى عُقد kernel sysfs ولكن لا يتم إعادة نشرها مرة أخرى إلى رمز إطارات العمل الذي يحدد مشغل الخاصية. نتيجة لذلك ، تفترض الأطر بشكل غير صحيح أن العمليات قد نجحت على الرغم من فشلها بصمت.
  2. تحتوي سكربتات init على عدد محدود من العمليات التي يمكن تنفيذها.

يضيف إصدار Android 12 دعم USB Gadget HAL لنماذج التحكم في الشبكة (NCM) واستدعاءات واجهة برمجة التطبيقات التي تعرض رقم إصدار HAL وسرعة USB. لمزيد من المعلومات حول استدعاءات API المتاحة من خلال USB HAL ، راجع ملخص حزمة android.hardware.usb .

HAL و Treble

تم استخدام البرامج النصية الخاصة init كبديل لطبقات HAL لإجراء عمليات USB الخاصة بالجهاز. USB (من خلال ADB) هو واجهة أساسية لتصحيح مشكلات النظام. إن وجود برنامج خفي أصلي لإجراء تكوين USB يلغي الاعتماد على رمز إطار العمل ، لذا حتى إذا تعطل إطار العمل ، يجب تشغيل USB.

ضمن نموذج Treble الذي تم تقديمه أيضًا في Android 8.0 ، يتم عزل جميع HALs عن خدمات النظام ومطلوب تشغيلها في برامجها الأصلية. هذا يلغي الحاجة إلى وجود برنامج خفي USB حصري لأن طبقة HAL تتضاعف بشكل جيد كخادم USB.

يعتني تطبيق HAL الافتراضي بجميع أجهزة Android 8.0 السابقة. لذلك ، لن يكون هناك أي عمل خاص بالجهاز لأجهزة Android 8.0 السابقة. يستخدم Android 8.0 واجهة HAL للاستعلام عن حالة منافذ USB وإجراء عمليات تبديل دور البيانات ودور الطاقة.

تطبيق

يجب تنفيذ واجهة USB HAL الجديدة على كل جهاز يتم تشغيله على Android 8.0. يجب أن يعتني التطبيق الافتراضي بالأجهزة التي تعمل بنظام Android 8.0 السابق. يعد التنفيذ الافتراضي كافيًا إذا كان الجهاز يستخدم الفئة dual_role_usb للإبلاغ عن حالة منفذ النوع c. قد تكون هناك حاجة لإجراء تغييرات بسيطة في برامج USB النصية الخاصة بالجهاز لنقل ملكية عقد الكتابة-c إلى النظام.