אפשר לעדכן מודולי 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.hal).IAllocDevice
כל שאר סוגי הנתונים מועתקים לקובץ types.hal.
הגדרות עם סימן פאונד מועברות ל-enums, ופריטים שלא שייכים ל-HIDL או שלא ניתן להמיר אותם (כמו הצהרות של פונקציות סטטיות) מועתקים להערות שמסומנות בטקסט NOTE.
פעילויות ידניות
הכלי c2hal לא יודע מה לעשות כשהוא נתקל במבנים מסוימים. לדוגמה, ב-HIDL אין מושג של מצביעים גולמיים. לכן, כש-c2hal נתקל במצביע בקובצי כותרות, הוא לא יודע אם לפרש את המצביע כמערך או כהפניה לאובייקט אחר. גם מצביעים מסוג void הם אטומים באופן דומה.
שדות כמו int reserved[7] צריכים להיות מוסרים ידנית במהלך המעבר ל-HIDL. פריטים כמו השם של ערך ההחזרה צריכים להיות מעודכנים למשהו משמעותי יותר. לדוגמה, המרת פרמטר ההחזרה של שיטות כמו write ב-NFC מהערך שנוצר אוטומטית int32_t write_ret לערך Status status (כאשר Status הוא enum חדש שמכיל סטטוסים אפשריים של NFC).
הטמעה של HAL
אחרי שיוצרים קובצי .hal שמייצגים את HAL, צריך ליצור את קובצי ה-Makefile (Make או Soong) שיוצרים את התמיכה בשפה ב-C++ וב-Java (אלא אם HAL משתמש בתכונה שלא נתמכת ב-Java). הסקריפט ./hardware/interfaces/update-makefiles.shיכול ליצור אוטומטית קובצי makefile עבור HAL שנמצאים בספרייה hardware/interfaces (ל-HAL במיקומים אחרים, פשוט מעדכנים את הסקריפט).
אחרי שמעדכנים את קובצי ה-Makefile, אפשר ליצור קובצי כותרת ולהטמיע שיטות. פרטים על הטמעת הממשק שנוצר זמינים במאמרים בנושא HIDL C++ (להטמעות ב-C++) או HIDL Java (להטמעות ב-Java).