تنفيذ طبقة المقابس الآمنة (HAL) على منفذ USB

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

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

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

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

HAL وTreble

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

بموجب نموذج Treble الذي تم طرحه أيضًا في الإصدار 8.0 من Android، يتم عزل جميع واجهات HAL عن خدمات System ويُشترط تشغيلها في برامج الخدمة الأساسية الخاصة بها. وهذا يلغي الحاجة إلى وجود برنامج خفي لـ 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 إلى النظام.