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).