تطبيق المرجع

نقدّم نموذج تنفيذ مرجعيًا لمكوّن VHAL في AIDL. تم تنفيذ سلسلة الخدمة الرئيسية على VehicleService.cpp. يمكن العثور على تنفيذ واجهة VHAL على الرابط DefaultVehicleHal.cpp.

ويستند تنفيذ المرجع إلى بنية من طبقتين. في الطبقة العلوية، تنفِّذ DefaultVehicleHal واجهة VHAL AIDL وتوفِّر منطق VHAL العام لجميع الأجهزة. في الطبقة السفلية، يستخدم FakeVehicleHardware واجهة IVehicleHardware. تحاكي هذه الفئة منطق VHAL للتفاعل مع الأجهزة الفعلية أو ناقل بيانات المركبة، وهي خاصة بالجهاز. ويمكن للمورّدين بشكل اختياري تعديل هذه البنية نفسها وإعادة استخدام فئة DefaultVehicleHal نفسها (تمديدها لاستبدال طريقة معيّنة) وتوفير عملية تنفيذ IVehicleHardware الخاصة بهم.

تنفيذ مرجع VHAL
الشكل 1. مرجع تنفيذ VHAL

يتضمّن DefaultVehicleHal المنطق التالي الذي يُعتبر عامًا ويمكن أن ينطبق على أي تنفيذ لبيانات VHAL.

  • تنفيذ واجهة IVehicle
  • تُجري عمليات فحص أساسية للبيانات المُدخلة، بما في ذلك التحقّق من عدم توفّر أرقام تعريف مكرّرة.
  • تخصيص عناصر العميل (مثل GetValuesClient) لكل عملية لكل عمود ربط، وإضافة كل عمود إلى مجموعة عالمية
  • تدير منطق عمليات الاستدعاء غير المتزامنة، مثل إضافة طلب في انتظار المراجعة إلى مجموعة طلبات في انتظار المراجعة. يحلّ الطلبات المعلّقة عند تلقّي النتائج أو يعرض خطأ عند انتهاء مهلة أحد الطلبات المعلّقة
  • يؤدي إلى تسلسل وإنهاء تسلسل LargeParcelable (راجِع ParcelableUtils.h).
  • إدارة الاشتراك (راجِع SubscriptionManager.h)
  • التحقّق من الأذونات (اطّلِع على الدالتَين checkReadPermission و checkWritePermission).
  • تستدعي هذه الدالة IVehicleHardware.checkHealth بشكل دوري وترسل إشارات فحص الأداء (اطّلِع على دالة checkHealth).

IVehicleHardware هي واجهة عامة تُستخدَم لتمثيل تنفيذ VHAL الخاص بالأجهزة. عملية التنفيذ المرجعية للسمة IVehicleHardware هي السمة FakeVehicleHardware، التي تستخدم خريطة في الذاكرة لتخزين قيمة الموقع ولا تتصل بحافلة مركبة فعلية. إنّها مصممة للعمل على محاكي ولا تعتمد على ملحقات خاصة بالأجهزة. يجب ألا تستخدم عمليات تنفيذ المورّدين هذا الإطار كما هو، ويجب أن تضيف منطقًا خاصًا بوحدة تحكّم المركبة.

في Android 14، يقرأ FakeVehicleHardware إعدادات الموقع المتوافقة أثناء التشغيل أثناء الإعداد من مجلد /vendor/etc/automotive/vhalconfig/ على الجهاز، الذي يحتوي على ملف إعدادات بتنسيق JSON. اطّلِع على ملف README المرجعي لتنسيق VHAL لمعرفة تنسيق ملف الإعدادات ومحتواه.

يوفِّر FakeVehicleHardware أيضًا تجاوز ملف الإعداد للاختبار. في حال ضبط خاصية النظام persist.vendor.vhal_init_value_override، يتم استخدام ملف الإعداد من مجلد /vendor/etc/automotive/vhaloverride/ على الجهاز لإلغاء الإعدادات الحالية. يمكن أن يستخدم موفِّر الخدمة نهجًا مشابهًا لكي لا تكون إعدادات المواقع المتوافقة مع VHAL- برمجية ثابتة، بل يمكن تحديدها ديناميكيًا في وقت البدء. يجب أن تكون إعدادات خصائص المركبة ثابتة بعد تشغيل الجهاز.