vehicle_hw_device Strukturreferenz
#include < vehicle.h >
Datenfelder | |
struct hw_device_t | gemeinsames |
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) |
Leere(* | 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(* | abonnieren )(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zone) |
int(* | Abbestellen )(struct vehicle_hw_device *device, int32_t prop) |
int(* | dump )(struct vehicle_hw_device *device, int fd) |
detaillierte Beschreibung
Felddokumentation
struct hw_device_t gemeinsam |
int(* dump)(struct vehicle_hw_device *device, int fd) |
Drucken Sie den Debugging-Status für die Fahrzeughal aus. Dies wird vom Fahrzeugnetzwerkdienst aufgerufen und in den Speicherauszug des Dienstes aufgenommen.
Der übergebene Dateideskriptor kann zum Schreiben von Debugging-Text mit dprintf() oder write() verwendet werden. Der Text sollte nur in ASCII-Codierung vorliegen.
Leistungsanforderungen:
Dies muss ein nicht blockierender Anruf sein. Die HAL sollte von diesem Aufruf in 1 ms zurückkehren, muss von diesem Aufruf in 10 ms zurückkehren. Dieser Aufruf muss Deadlocks vermeiden, da er an jedem Betriebspunkt aufgerufen werden kann. Alle verwendeten Synchronisierungsprimitive (z. B. Mutex-Sperren oder Semaphoren) sollten mit einem Timeout erfasst werden.
int(* get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
Erhalten Sie sofort einen Fahrzeugwert. Daten sollten richtig zugeordnet werden. Der Aufrufer der API BESITZT das Datenfeld. Der Aufrufer setzt data->prop, data->value_type und optional den Zonenwert für die Zoneneigenschaft. Aber die HAL-Implementierung muss bei der Rückgabe alle Einträge richtig füllen. Für den Zeigertyp sollte die HAL-Implementierung den erforderlichen Speicher zuweisen, und der Aufrufer ist für das Aufrufen von release_memory_from_get verantwortlich, wodurch HAL den zugewiesenen Speicher freigeben kann. Für den Eigenschaftstyp VEHICLE_PROP_CHANGE_MODE_STATIC sollte get immer denselben Wert zurückgeben. Für den Eigenschaftstyp VEHICLE_PROP_CHANGE_MODE_ON_CHANGE sollte der neueste Wert zurückgegeben werden. Wenn noch keine Daten verfügbar sind, was in der Anfangsphase passieren kann, sollte dieser Aufruf sofort mit dem Fehlercode -EAGAIN zurückkehren.
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 Eigenschaften aufzählen. Die Liste wird in "list" zurückgegeben.
- Parameter
num_properties Anzahl der im neu abgestimmten Array enthaltenen Eigenschaften.
- Kehrt zurück
- Reihe von Eigenschaftskonfigurationen, die von diesem Auto unterstützt werden. Beachten Sie, dass die zurückgegebenen Daten konstant sind und der Aufrufer sie nicht ändern kann. Die HAL-Implementierung sollte diesen Speicher behalten, bis HAL veröffentlicht wird, um ein erneutes Kopieren zu vermeiden.
int(* release)(struct vehicle_hw_device *device) |
Vor dem Aufruf von close sollte der Benutzer die registrierten Callback-Funktionen zerstören. Falls der unsubscribe()- Aufruf nicht für alle Eigenschaften vor release() aufgerufen wird, dann wird release() die Eigenschaften selbst abbestellen.
void(* release_memory_from_get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
Geben Sie den Speicher frei, der den Daten im vorherigen Get-Aufruf zugewiesen wurde. get call for byte or string beinhaltet die Zuweisung des notwendigen Speichers von der Fahrzeughal. Sicherheitshalber sollte der von Fahrzeughal zugewiesene Speicher von Fahrzeughal freigegeben werden, und der Fahrzeugnetzwerkdienst wird dies aufrufen, wenn Daten von Fahrzeughal nicht mehr benötigt werden. Die Fahrzeughal-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 die Daten selbst vom Fahrzeugnetzwerkdienst zugewiesen werden. Sobald der Speicher freigegeben ist, sollte der entsprechende Zeiger auf NULL gesetzt werden, wenn das Fahrzeug hal ist.
int(* set)(struct vehicle_hw_device *device, const vehicle_prop_value_t *data) |
Legen Sie einen Fahrzeugeigenschaftswert fest. Daten sollten richtig zugewiesen werden und nicht NULL. Der Aufrufer der API BESITZT das Datenfeld. Der Zeitstempel der Daten wird für den Set-Vorgang ignoriert. Das Festlegen einiger Eigenschaften erfordert, dass der Anfangszustand verfügbar ist. Je nach Fahrzeughal- te sind solche initialen Daten kurz nach der Initialisierung nicht verfügbar. In diesem Fall kann set call wie get call -EAGAIN zurückgeben. Bei einer Eigenschaft mit separater Stromsteuerung kann set fehlschlagen, wenn die Eigenschaft 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 zone) |
Veranstaltungen abonnieren. Abhängig von der Ausgabe von list_properties, wenn die Eigenschaft: a) on-change: sample_rate sollte auf 0 gesetzt werden. b) unterstützt frequency: sample_rate sollte von min_sample_rate auf max_sample_rate gesetzt werden. Für Eigenschaftstypen, die sich ändern, führt der Fahrzeugnetzwerkdienst einen weiteren Get-Aufruf durch, um den Anfangszustand zu prüfen. Aus diesem Grund muss die Fahrzeughal-Implementierung keinen Anfangszustand für Eigenschaftstypen bei Änderungen senden.
- Parameter
Gerät Stütze Beispielrate Zonen Alle abonnierten Zonen für Zoneneigentum. kann für nicht in Zonen aufgeteilte Grundstücke ignoriert werden. 0 bedeutet, dass alle Zonen unterstützt werden, statt keine Zone.
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/ vehikel.h