HAL-Module umwandeln

Sie können vorhandene HAL-Module auf HIDL HAL-Module aktualisieren, indem Sie die Überschrift in hardware/libhardware/include/hardware.

c2hal verwenden

Die c2hal die meisten Konvertierungen, sodass weniger manuelle Schritte Änderungen. Um beispielsweise eine HIDL-Datei .hal für die 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

Mit diesen Befehlen werden Dateien in hardware/interfaces/nfc/1.0/ hinzugefügt. Laufen hardware/interfaces/update-makefiles.sh von $ANDROID_BUILD_TOP fügt auch das erforderliche Makefile zum HAL hinzu. Hier können Sie Folgendes tun: Manuelle Änderungen vornehmen, um den HAL vollständig zu konvertieren.

c2hal-Aktivitäten

Wenn Sie c2hal ausführen, wird alles in der Headerdatei übertragen. zu .hal Dateien.

c2hal identifiziert Strukturen, die Funktionszeiger im bereitgestellte Headerdatei und konvertiert jede Struktur in eine separate Interface-Datei. Beispielsweise wird alloc_device_t in den IAllocDevice HAL-Modul (in der Datei) IAllocDevice.hal.

Alle anderen Datentypen werden in eine types.hal-Datei kopiert. Pfund-Definitionen werden in Enums verschoben und Elemente, die nicht Teil von HIDL sind oder nicht Convertibles (z. B. statische Funktionsdeklarationen) werden in Kommentare kopiert. mit dem Text "NOTE" markiert.

Manuelle Aktivitäten

Das c2hal-Tool weiß nicht, was zu tun ist, wenn es bestimmte Konstrukte. Zum Beispiel hat HIDL kein Konzept von Rohzeigern. wegen Wenn c2hal in Headerdateien auf einen Zeiger stößt, ob der Zeiger als Array oder als Bezug auf ein anderes Objekt verwenden. Ungültige Zeiger sind ebenfalls undurchsichtig.

Ein Feld wie int reserved[7] muss während den Übergang zu HIDL. Artikel wie der Name des Rückgabewerts sollten in einen aussagekräftigen Text umgewandelt, z. B. durch die Konvertierung der Rendite Parameter von Methoden wie write in NFC aus der automatisch generierten int32_t write_ret nach Status status (wobei Status ist eine neue Aufzählung mit möglichen NFC-Statuswerten.

HAL implementieren

Nachdem Sie .hal-Dateien zur Darstellung Ihres HAL erstellt haben, müssen die Makefiles (Make-Dateien oder Songs) generieren, die die Sprachunterstützung in C++ und Java (es sei denn, der HAL verwendet eine Funktion, die in Java nicht unterstützt wird). Die ./hardware/interfaces/update-makefiles.sh Script kann automatisch Generieren von Makefiles für HALs im hardware/interfaces (bei HALs an anderen Speicherorten einfach das Skript aktualisieren).

Wenn die Makefiles auf dem neuesten Stand sind, können Sie Header-Dateien generieren und implementieren. Weitere Informationen zum Implementieren der generierten Schnittstelle finden Sie unter HIDL C++ (für C++ Implementierungen) oder HIDL Java (für Java-Implementierungen).