تنفيذ USB HAL

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

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

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

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

HAL و Treble

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

تحت التريبل نموذج قدم أيضا في الروبوت 8.0، يتم عزل كل من طبقة تجريد من خدمات النظام والمطلوبة لتشغيل في الشياطين الأصلية الخاصة بهم. هذا يلغي الحاجة إلى وجود برنامج خفي 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 فئة لوضع تقرير ميناء نوع ج. قد تكون هناك حاجة لإجراء تغييرات تافهة في برامج USB النصية الخاصة بالجهاز لنقل ملكية العقد typc-c إلى النظام.