يمكنك تعديل وحدات 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).