تحويل وحدات HAL

يمكنك تعديل وحدات HAL المتوفّرة مسبقًا إلى وحدات HIDL HAL من خلال تحويل في hardware/libhardware/include/hardware.

استخدام c2hal

تشير رسالة الأشكال البيانية c2hal معظم عمليات الإحالة الناجحة، ما يقلل من عدد العمليات اليدوية التغييرات. على سبيل المثال، لإنشاء ملف HIDL .hal لبروتوكول NFC. طبقة تجريد الأجهزة (HAL):

make c2hal
c2hal -r android.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport -p android.hardware.nfc@1.0 hardware/libhardware/include/hardware/nfc.h

تضيف هذه الأوامر ملفات في hardware/interfaces/nfc/1.0/. الركض hardware/interfaces/update-makefiles.sh من $ANDROID_BUILD_TOP يضيف أيضًا ملف makefile المطلوب إلى HAL. من هنا، يمكنك إجراء تغييرات يدوية لتحويل HAL بشكل كامل.

أنشطة C2hal

عند تشغيل c2hal، يتم نقل كل محتوى ملف العنوان إلى .hal ملف.

تحدِّد c2hal الدوال التي تحتوي على مؤشرات الدوال في الذي تم تقديمه ويحول كل هيكل إلى ملف واجهة منفصل. على سبيل المثال، يتم تحويل alloc_device_t إلى وحدة HAL IAllocDevice (في الملف) IAllocDevice.hal).

ويتم نسخ جميع أنواع البيانات الأخرى إلى ملف types.hal. يتم نقل تعريفات الجنيه إلى تعدادات، والعناصر التي لا تشكّل جزءًا من HIDL أو لا قابلة للتحويل (مثل تصريحات الدوال الثابتة) يتم نسخها إلى تعليقات تم تمييزه بالنص "NOTE".

الأنشطة اليدوية

لا تعرف أداة c2hal ما يجب فعله عند حدوث إنشاءات معينة. على سبيل المثال، لا تتضمن HIDL مفهوم المؤشرات الأولية، بسبب هذا، عندما يصادف c2hal مؤشرًا في ملفات الرأس، فإنه لا ما إذا كان ينبغي تفسير المؤشر على أنه صفيف أو كمرجع كائن آخر. وبالمثل، فإنّ المؤشرات الباطلة لا تزال معتمة.

يجب إزالة حقل مثل int reserved[7] يدويًا أثناء الانتقال إلى HIDL. يجب أن تكون السلع مثل اسم القيمة المعروضة وتحديثه إلى شيء أكثر وضوحًا؛ على سبيل المثال، تحويل العائد معلَمة عدة طرق مثل write في NFC من الطريقة التي تم إنشاؤها تلقائيًا من int32_t write_ret إلى Status status (حيث Status هو تعداد جديد يحتوي على حالات NFC المحتمَلة).

تنفيذ اتفاقية HAL

بعد إنشاء .hal ملف لتمثيل HAL، يمكنك إنشاء ملفات Makefiles (Make أو Sureg) التي تنشئ دعم اللغة في C++ وJava (ما لم يستخدم HAL ميزة غير معتمدة في Java) تشير رسالة الأشكال البيانية يمكن أن يتم تلقائيًا استخدام نص برمجي واحد (./hardware/interfaces/update-makefiles.sh) إنشاء ملفات تقويم لعناصر التحكم في الشبكة الموجودة في hardware/interfaces الدليل (بالنسبة إلى HALs في المواقع الأخرى، ما عليك سوى تحديث البرنامج النصي).

عندما تكون ملفات الإصلاح محدَّثة، تكون جاهزًا لإنشاء ملفات العنوان وتنفيذ الأساليب. للحصول على تفاصيل عن تنفيذ الواجهة التي تم إنشاؤها، يمكنك الاطّلاع على HIDL C++ (لـ C++ ) التنفيذ) أو HIDL Java (لعمليات تنفيذ Java).