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
Dokumentacja terenowa
struktura hw_device_t wspólna |
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.
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.
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) |
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.
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.
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.
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.
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.
int(* unsubscribe)(struct Vehicle_hw_device *device, int32_t prop) |
Dokumentacja tej struktury została wygenerowana z następującego pliku:
- hardware/libhardware/include/hardware/ pojazd.h