ينقل إصدار Android 8.0 معالجة أوامر USB من init
النصوص البرمجية إلى برنامج تشغيل USB أصلي لتحسين الضبط وملف برمجي
موثوق. لإعداد وظيفة التطبيق المصغّر، يتم استخدام init
النصوص البرمجية
(عوامل تشغيل الموقع) لتنفيذ عمليات التطبيق المصغّر الخاصة بالجهاز.
في الإصدارات السابقة، تمّ إجراء هذه الإعدادات الخاصة بالأجهزة من خلال
النصوص البرمجية init
الخاصة بالأجهزة (باستخدام عوامل تشغيل المواقع). يؤدي الانتقال إلى تصميم
Hardware Abstraction Layer (HAL) إلى تنفيذ أنظف بكثير
يحلّ هذه المشاكل:
- قد تفشل عمليات مثل عمليات الكتابة إلى عقد sysfs الخاصة بالنواة، ولكن لن تتم نشرها مرة أخرى إلى رمز الإطارات الأساسية الذي يضبط عامل تشغيل الموقع. ونتيجةً لذلك،تفترض الإطارات بشكلٍ خاطئ أنّ العمليات قد نجحت على الرغم من أنّها قد تعذّرت بصمت.
- تحتوي نصوص
init
البرمجية على عدد محدود من العمليات التي يمكن تنفيذها.
يضيف إصدار Android 12 إمكانية استخدام HAL لأجهزة USB Gadget في نماذج التحكّم في الشبكة (NCM) وطلبات بيانات واجهة برمجة التطبيقات التي تعرض رقم إصدار HAL وسرعة USB. لمزيد من
المعلومات حول طلبات بيانات واجهة برمجة التطبيقات المتاحة من خلال وحدة HAL الخاصة بمنفذ USB، يُرجى الاطّلاع على
ملخّص حزمة android.hardware.usb
.
HAL وTreble
تم استخدام النصوص البرمجية init
الخاصة بالجهاز كبديل لطبقات ملف تعريف HAL لتنفيذ عمليات 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 إلى النظام.