في الإصدار 8.0 من نظام التشغيل Android، تم نقل عملية معالجة أوامر USB من البرامج النصية إلى برنامج خفي أصلي خاص بمنفذ USB، وذلك لتحسين عملية الإعداد وموثوقية الرمز.init
بالنسبة إلى إعدادات وظيفة الأداة، يتم استخدام نصوص init
(مشغّلات الخصائص) لتنفيذ عمليات الأداة الخاصة بالجهاز.
في الإصدارات السابقة، تم تحقيق عمليات الضبط الخاصة بالجهاز من خلال نصوص برمجية init
خاصة بالجهاز (باستخدام مشغّلات الخصائص). يؤدي الانتقال إلى تصميم
طبقة تجريد الأجهزة (HAL) إلى تنفيذ أكثر سلاسة
يحل هذه المشاكل:
- قد تتعذّر عمليات مثل الكتابة إلى عُقد sysfs في النواة، ولكن لا يتم نقلها مرة أخرى إلى رمز الأُطر الذي يضبط مشغّل الخاصية. نتيجةً لذلك، تفترض الأُطر بشكل غير صحيح أنّ العمليات قد نجحت على الرغم من أنّها تعذّرت بدون إشعار.
- تحتوي نصوص
init
البرمجية على عدد محدود من العمليات التي يمكن تنفيذها.
يضيف إصدار Android 12 إمكانية استخدام طبقة تجريد الأجهزة (HAL) الخاصة بأجهزة USB الصغيرة في "نماذج التحكّم في الشبكة" (NCM) ومكالمات واجهة برمجة التطبيقات التي تعرض رقم إصدار طبقة تجريد الأجهزة وسرعة USB. للمزيد من المعلومات حول طلبات البيانات من واجهة برمجة التطبيقات المتاحة من خلال طبقة تجريد الأجهزة (HAL) الخاصة بمنفذ USB، يُرجى الاطّلاع على ملخّص حزمة android.hardware.usb
.
HAL وTreble
تم استخدام نصوص init
البرمجية الخاصة بالجهاز كبديل لطبقات HAL لتنفيذ عمليات USB الخاصة بالجهاز. تُعدّ واجهة USB (من خلال ADB) واجهة أساسية لتصحيح أخطاء النظام. يؤدي توفّر برنامج خفي أصلي لتنفيذ عملية ضبط USB إلى إلغاء الاعتماد على رمز إطار العمل، وبالتالي حتى إذا تعذّر تشغيل إطار العمل، سيظل USB يعمل.
بموجب نموذج Treble الذي تم تقديمه أيضًا في Android 8.0، يتم عزل جميع طبقات HAL عن خدمات النظام، ويجب تشغيلها في برامج خفية أصلية خاصة بها. ويؤدي ذلك إلى إلغاء الحاجة إلى توفّر برنامج خفي حصري لبروتوكول USB، لأنّ طبقة HAL تعمل بشكل جيد كبرنامج خفي لبروتوكول USB.
يتولّى التنفيذ التلقائي لطبقة تجريد الأجهزة (HAL) التعامل مع جميع الأجهزة التي تعمل بإصدارات أقدم من Android 8.0. وبالتالي، لن يكون هناك أي عمل خاص بالجهاز للأجهزة التي تعمل بإصدارات Android الأقدم من 8.0. يستخدم نظام التشغيل Android 8.0 واجهة HAL للاستعلام عن حالة منافذ USB وإجراء عمليات تبديل أدوار البيانات والطاقة.
التنفيذ
يجب تنفيذ واجهة USB HAL الجديدة على كل جهاز يعمل بالإصدار 8.0 من نظام التشغيل Android.
يجب أن يهتم التنفيذ التلقائي بالأجهزة التي تعمل بإصدارات أقدم من Android 8.0. يكون التنفيذ التلقائي كافيًا إذا كان الجهاز يستخدم فئة dual_role_usb
للإبلاغ عن حالة منفذ USB من النوع C. قد تكون هناك حاجة إلى إجراء تغييرات بسيطة في نصوص USB البرمجية الخاصة بالجهاز
لنقل ملكية عقد typc-c إلى النظام.