Vehicle_hw_device Odniesienie do struktury

Vehicle_hw_device Odniesienie do struktury

#include < vehicle.h >

Pola danych

struktura hw_device_t wspólny
int(* init )(struct Vehicle_hw_device *device, Vehicle_event_callback_fn event_fn, Vehicle_error_callback_fn err_fn)
int(* wydanie )(struktura Vehicle_hw_device *device)
pojazd_prop_config_t stała *(* list_properties )(struct Vehicle_hw_device *device, int *num_properties)
int(* pobierz )(struct Vehicle_hw_device *device, Vehicle_prop_value_t *data)
próżnia(* release_memory_from_get )(struktura Vehicle_hw_device *device, Vehicle_prop_value_t *data)
int(* set )(struct Vehicle_hw_device *device, const Vehicle_prop_value_t *data)
int(* subskrybuj ) (struktura Vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t strefy)
int(* wypisz się )(struct Vehicle_hw_device *device, int32_t prop)
int(* zrzut )(struct Vehicle_hw_device *device, int fd)

szczegółowy opis

Definicja w linii 1639 pliku Vehicle.h .

Dokumentacja terenowa

struktura hw_device_t wspólna

Definicja w linii 1640 pliku Vehicle.h .

int(* dump)(struct Vehicle_hw_device *device, int fd)

Wydrukuj stan debugowania dla hali pojazdu. Zostanie to wywołane przez usługę sieci pojazdu i uwzględnione w zrzucie usługi.

Przekazany deskryptor pliku może zostać użyty do zapisania tekstu debugowania za pomocą funkcji dprintf() lub write(). Tekst powinien być zapisany wyłącznie w kodowaniu ASCII.

Wymagania dotyczące wydajności:

To musi być połączenie nieblokujące. HAL powinien powrócić z tego połączenia za 1 ms, musi wrócić z tego połączenia za 10 ms. To wywołanie musi unikać zakleszczeń, jak można je wywołać w dowolnym momencie operacji. Wszelkie użyte prymitywy synchronizacji (takie jak blokady muteksów lub semafory) powinny zostać uzyskane z limitem czasu.

Definicja w linii 1744 pliku Vehicle.h .

int(* get)(struct Vehicle_hw_device *device, Vehicle_prop_value_t *data)

Natychmiast uzyskaj wartość właściwości pojazdu. dane powinny być odpowiednio przydzielone. Osoba wywołująca API JEST WŁAŚCICIELEm pola danych. Osoba wywołująca ustawi dane->prop, dane->typ_wartości i opcjonalnie wartość strefy dla właściwości strefowej. Jednak implementacja HAL musi poprawnie wypełnić wszystkie wpisy po powrocie. W przypadku typu wskaźnikowego implementacja HAL powinna przydzielić niezbędną pamięć, a obiekt wywołujący jest odpowiedzialny za wywołanie release_memory_from_get, co pozwala HAL zwolnić przydzieloną pamięć. Dla właściwości typu VEHICLE_PROP_CHANGE_MODE_STATIC funkcja get powinna zawsze zwracać tę samą wartość. Dla właściwości typu VEHICLE_PROP_CHANGE_MODE_ON_CHANGE powinna zwracać najnowszą wartość. Jeśli nie ma jeszcze dostępnych danych, co może się zdarzyć na etapie początkowym, to wywołanie powinno natychmiast powrócić z kodem błędu -EAGAIN.

Definicja w linii 1681 pliku Vehicle.h .

int(* init)(struct Vehicle_hw_device *device, Vehicle_event_callback_fn event_fn, Vehicle_error_callback_fn err_fn)

Po wywołaniu open na urządzeniu użytkownik powinien zarejestrować wywołania zwrotne dla funkcji zdarzeń i błędów.

Definicja w linii 1646 pliku Vehicle.h .

Vehicle_prop_config_t const*(* list_properties)(struct Vehicle_hw_device *device, int *num_properties)

Wylicz wszystkie dostępne właściwości. Lista jest zwracana w postaci „list”.

Parametry
liczba_właściwości liczba właściwości zawartych w zwróconej tablicy.
Zwroty
szereg konfiguracji właściwości obsługiwanych przez ten samochód. Należy pamiętać, że zwracane dane są stałe i obiekt wywołujący nie może ich modyfikować. Implementacja HAL powinna przechowywać tę pamięć do czasu wydania HAL, aby uniknąć ponownego kopiowania.

Definicja w linii 1663 pliku Vehicle.h .

int(* release)(struct Vehicle_hw_device *device)

Przed wywołaniem funkcji Close użytkownik powinien zniszczyć zarejestrowane funkcje wywołania zwrotnego. W przypadku, gdy wywołanie unsubscribe() nie zostanie wywołane dla wszystkich właściwości przed wydaniem(), wówczas release() anuluje subskrypcję samych właściwości.

Definicja w linii 1654 pliku Vehicle.h .

void(* release_memory_from_get)(struct Vehicle_hw_device *device, Vehicle_prop_value_t *data)

Zwolnij pamięć przydzieloną do danych w poprzednim wywołaniu get. get wywołanie bajtu lub ciągu znaków polega na przydzieleniu niezbędnej pamięci z hal pojazdu. Dla bezpieczeństwa pamięć przydzielona przez halę pojazdu powinna zostać zwolniona przez halę pojazdu, a usługa sieci pojazdu wywoła to, gdy dane z hali pojazdu nie będą już potrzebne. Implementacja hal pojazdu powinna zwalniać jedynie element Vehicle_prop_value_t, taki jak data->str_value.data lub data->bytes_value.data, ale nie same dane, ponieważ same dane są przydzielane z usługi sieciowej pojazdu. Po zwolnieniu pamięci odpowiedni wskaźnik powinien zostać ustawiony na NULL w przypadku hal pojazdu.

Definicja w linii 1693 pliku Vehicle.h .

int(* set)(struct Vehicle_hw_device *device, const Vehicle_prop_value_t *data)

Ustaw wartość właściwości pojazdu. dane powinny być przydzielone prawidłowo, a nie NULL. Osoba wywołująca API JEST WŁAŚCICIELEm pola danych. znacznik czasu danych będzie ignorowany podczas ustawiania operacji. Ustawienie niektórych właściwości wymaga dostępności stanu początkowego. W zależności od typu pojazdu takie dane początkowe mogą nie być dostępne przez krótki czas po inicjalizacji. W takim przypadku ustawienie wywołania może zwrócić -EAGAIN, tak jak wywołanie. W przypadku nieruchomości z oddzielnym sterowaniem zasilaniem ustawienie może zakończyć się niepowodzeniem, jeśli nieruchomość nie jest włączona. W takim przypadku hal powinien zwrócić błąd -ESHUTDOWN.

Definicja w linii 1706 pliku Vehicle.h .

int(* subskrybuj)(struct Vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t strefy)

Subskrybuj wydarzenia. W zależności od wyniku list_properties, jeśli właściwość jest następująca: a) on-change: sample_rate powinna być ustawiona na 0. b) obsługuje częstotliwość: sample_rate powinna być ustawiona od min_sample_rate do max_sample_rate. W przypadku właściwości typu on-change usługa sieci pojazdu wykona kolejne wywołanie get w celu sprawdzenia stanu początkowego. Z tego powodu implementacja hal pojazdu nie musi wysyłać stanu początkowego dla właściwości typu on-change.

Parametry
urządzenie
rekwizyt
próbna stawka
strefy Wszystkie subskrybowane strefy dla nieruchomości strefowej. można zignorować w przypadku nieruchomości nieobjętych strefą. Wartość 0 oznacza, że ​​obsługiwane są wszystkie strefy, a nie brak strefy.

Definicja w linii 1723 pliku Vehicle.h .

int(* unsubscribe)(struct Vehicle_hw_device *device, int32_t prop)

Anuluj subskrypcję nieruchomości.

Definicja w linii 1727 pliku Vehicle.h .


Dokumentacja tej struktury została wygenerowana z następującego pliku:
  • hardware/libhardware/include/hardware/ pojazd.h