تنفيذ USB HAL

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

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

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

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

هال وتريبل

تم استخدام البرامج 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 الخاصة بالجهاز لنقل ملكية عقد typc-c إلى النظام.