Strukturreferenz „vehicle_hw_device“
#include <
vehicle.h
>
Datenfelder |
|
struct hw_device_t | common |
int(* | init )(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn) |
int(* | release )(struct vehicle_hw_device *device) |
vehicle_prop_config_t const *(* | list_properties )(struct vehicle_hw_device *device, int *num_properties) |
int(* | get )(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
void(* | release_memory_from_get )(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
int(* | set )(struct vehicle_hw_device *device, const vehicle_prop_value_t *data) |
int(* | subscribe )(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones) |
int(* | unsubscribe )(struct vehicle_hw_device *device, int32_t prop) |
int(* | dump )(struct vehicle_hw_device *device, int fd) |
Detaillierte Beschreibung
Felddokumentation
struct hw_device_t common |
int(* dump)(struct vehicle_hw_device *device, int fd) |
Debug-Status für die Fahrzeug-HAL ausdrucken Dieser wird vom Fahrzeugnetzwerkdienst aufgerufen und in den Dump des Dienstes aufgenommen.
Der übergebene Dateideskriptor kann verwendet werden, um mit dprintf() oder write() Debug-Text zu schreiben. Der Text sollte nur in ASCII-Codierung vorliegen.
Leistungsanforderungen:
Dies muss ein nicht blockierender Aufruf sein. Die HAL sollte nach 1 ms von diesem Aufruf zurückkehren, muss aber nach 10 ms von diesem Aufruf zurückkehren. Bei diesem Aufruf dürfen keine Deadlocks auftreten, da er jederzeit aufgerufen werden kann. Alle verwendeten Synchronisierungsprimitive (z. B. Mutex-Sperren oder Semaphoren) sollten mit einem Zeitlimit erworben werden.
int(* get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
Rufen Sie sofort einen Wert für die Fahrzeugeigenschaft ab. Die Daten sollten korrekt zugeordnet werden. Der Aufrufer der API IST DER EIGENTÜMER des Datenfelds. Der Aufrufer legt „data->prop“, „data->value_type“ und optional den Zonenwert für die zonenspezifische Property fest. Bei der HAL-Implementierung müssen jedoch alle Einträge bei der Rückgabe korrekt ausgefüllt werden. Für den Zeigertyp sollte die HAL-Implementierung den erforderlichen Speicher zuweisen. Der Aufrufer ist dafür verantwortlich, release_memory_from_get aufzurufen, damit die HAL den zugewiesenen Speicher freigeben kann. Für das Attribut vom Typ „VEHICLE_PROP_CHANGE_MODE_STATIC“ sollte „get“ immer denselben Wert zurückgeben. Für den Property-Typ „VEHICLE_PROP_CHANGE_MODE_ON_CHANGE“ sollte der aktuelle Wert zurückgegeben werden. Wenn noch keine Daten verfügbar sind, was in der Anfangsphase vorkommen kann, sollte dieser Aufruf sofort mit dem Fehlercode -EAGAIN zurückgegeben werden.
int(* init)(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn) |
vehicle_prop_config_t const*(* list_properties)(struct vehicle_hw_device *device, int *num_properties) |
Alle verfügbaren Properties auflisten Die Liste wird in „list“ zurückgegeben.
- Parameter
-
Anzahl_Unterkünfte Anzahl der Unterkünfte im zurückgegebenen Array.
- Returns
- Array von Property-Konfigurationen, die von diesem Auto unterstützt werden. Die zurückgegebenen Daten sind konstant und können vom Aufrufer nicht geändert werden. Die HAL-Implementierung sollte diesen Speicherplatz bis zur Veröffentlichung der HAL beibehalten, um ein erneutes Kopieren zu vermeiden.
int(* release)(struct vehicle_hw_device *device) |
Vor dem Aufruf von „close“ sollte der Nutzer die registrierten Callback-Funktionen löschen. Wenn der Aufruf von unsubscribe() für alle Properties nicht vor release() erfolgt, wird die Kündigung der Properties von release() selbst durchgeführt.
void(* release_memory_from_get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
Gibt den Speicher frei, der den Daten im vorherigen Get-Aufruf zugewiesen wurde. Der Get-Aufruf für Byte oder String umfasst die Zuweisung des erforderlichen Speichers aus der Vehicle HAL. Der vom Vehicle HAL zugewiesene Arbeitsspeicher sollte zur Sicherheit vom Vehicle HAL freigegeben werden. Der Vehicle Network Service ruft diese Funktion auf, wenn die Daten aus dem Vehicle HAL nicht mehr erforderlich sind. Die Vehicle HAL-Implementierung sollte nur Mitglieder von „vehicle_prop_value_t“ wie „data->str_value.data“ oder „data->bytes_value.data“ freigeben, aber nicht die Daten selbst, da diese vom Vehicle Network Service zugewiesen werden. Sobald der Speicher freigegeben wurde, sollte der entsprechende Zeiger von der Fahrzeug-HAL auf NULL gesetzt werden.
int(* set)(struct vehicle_hw_device *device, const vehicle_prop_value_t *data) |
Legen Sie einen Wert für die Fahrzeugeigenschaft fest. Die Daten müssen korrekt zugewiesen sein und dürfen nicht NULL sein. Der Aufrufer der API ist Inhaber des Datenfelds. Der Zeitstempel der Daten wird beim Festlegen ignoriert. Für das Festlegen einiger Properties muss der Anfangsstatus verfügbar sein. Je nach Fahrzeug-HAL sind diese anfänglichen Daten nach der Initialisierung möglicherweise für kurze Zeit nicht verfügbar. In diesem Fall kann set call wie get call den Wert -EAGAIN zurückgeben. Bei einer Property mit separater Ein-/Aus-Steuerung kann die Einstellung fehlschlagen, wenn die Property nicht eingeschaltet ist. In diesem Fall sollte hal den Fehler -ESHUTDOWN zurückgeben.
int(* subscribe)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones) |
Ereignisse abonnieren Je nach Ausgabe von „list_properties“ ist für die Property Folgendes zu tun: a) „on-change“: „sample_rate“ sollte auf „0“ festgelegt werden. b) „supports frequency“: „sample_rate“ sollte von „min_sample_rate“ auf „max_sample_rate“ festgelegt werden. Bei Eigenschaften vom Typ „Bei Änderung“ sendet der Fahrzeugnetzwerkdienst einen weiteren Abruf, um den ursprünglichen Status zu prüfen. Daher muss bei der Implementierung der Vehicle HAL kein Anfangsstatus für Eigenschaften vom Typ „on-change“ gesendet werden.
- Parameter
-
Gerät prop sample_rate Zonen Alle abonnierten Zonen für eine Property mit Zonen. Kann für Properties ohne Zonen ignoriert werden. „0“ bedeutet, dass alle Zonen unterstützt werden, nicht, dass keine Zone unterstützt wird.
int(* unsubscribe)(struct vehicle_hw_device *device, int32_t prop) |
Die Dokumentation für diese Struktur wurde aus der folgenden Datei generiert:
- hardware/libhardware/include/hardware/ vehicle.h