Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Vehicle_hw_device Informacje o strukturze

Vehicle_hw_device Informacje o strukturze

#include < vehicle.h >

Pola danych

struct 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(* 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)
próżnia(* release_memory_from_get )(struktura vehicle_hw_device *urządzenie, vehicle_prop_value_t *dane)
int(* set )(struct vehicle_hw_device *device, const vehicle_prop_value_t *data)
int(* subskrybuj )(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones)
int(* wypisz się )(struct vehicle_hw_device *device, int32_t prop)
int(* dump )(struct vehicle_hw_device *device, int fd)

szczegółowy opis

Definicja w wierszu 1639 pliku vehicle.h .

Dokumentacja terenowa

struct hw_device_t common

Definicja w wierszu 1640 pliku vehicle.h .

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

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

Przekazany deskryptor pliku może być użyty do pisania tekstu debugowania za pomocą dprintf() lub write(). Tekst powinien być zakodowany tylko w ASCII.

Wymagania dotyczące wydajności:

To musi być połączenie nieblokujące. HAL powinien wrócić z tego połączenia w ciągu 1ms, musi wrócić z tego połączenia w ciągu 10ms. To wywołanie musi unikać zakleszczeń, ponieważ może zostać wywołane w dowolnym momencie działania. Wszelkie używane prymitywy synchronizacji (takie jak blokady muteksów lub semafory) powinny zostać pobrane z limitem czasu.

Definicja w wierszu 1744 pliku vehicle.h .

int(* get)(struct vehicle_hw_device *device, vehicle_prop_value_t *dane)

Uzyskaj natychmiast wartość nieruchomości pojazdu. dane powinny być właściwie alokowane. Wywołujący API POSIADA pole danych. Wywołujący ustawi data->prop, data->value_type i opcjonalnie wartość zone dla zoned property. Ale implementacja HAL musi poprawnie wypełnić wszystkie wpisy podczas powrotu. W przypadku typu wskaźnika implementacja HAL powinna alokować niezbędną pamięć, a wywołujący jest odpowiedzialny za wywołanie release_memory_from_get, co pozwala HALowi zwolnić przydzieloną pamięć. Dla właściwości typu VEHICLE_PROP_CHANGE_MODE_STATIC, get powinno zawsze zwracać tę samą wartość. W przypadku właściwości typu VEHICLE_PROP_CHANGE_MODE_ON_CHANGE powinna zwrócić ostatnią wartość. Jeśli nie ma jeszcze dostępnych danych, co może się zdarzyć w początkowej fazie, wywołanie to powinno natychmiast powrócić z kodem błędu -EAGAIN.

Definicja w wierszu 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 wierszu 1646 pliku vehicle.h .

vehicle_prop_config_t const*(* list_properties)(struct vehicle_hw_device *device, int *num_properties)

Wymień wszystkie dostępne właściwości. Lista jest zwracana w postaci „lista”.

Parametry
liczba_właściwości liczba właściwości zawartych w zwróconej tablicy.
Zwroty
tablica konfiguracji właściwości obsługiwanych przez ten samochód. Zwróć uwagę, że zwrócone dane to const i wywołujący nie może ich modyfikować. Implementacja warstwy HAL powinna zachować tę pamięć do momentu wydania warstwy HAL, aby uniknąć ponownego jej kopiowania.

Definicja w wierszu 1663 pliku vehicle.h .

int(* release)(struct vehicle_hw_device *device)

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

Definicja w wierszu 1654 pliku vehicle.h .

void(* release_memory_from_get)(struktura vehicle_hw_device *urządzenie, vehicle_prop_value_t *dane)

Zwolnij pamięć przydzieloną do danych w poprzednim wywołaniu. get call for byte lub string polega na przydzieleniu niezbędnej pamięci z hal pojazdu. Dla bezpieczeństwa pamięć przydzielona przez halę pojazdu powinna być zwalniana przez halę pojazdu, a serwis sieci pojazdu wywoła to, gdy dane z hali pojazdu nie będą już potrzebne. Implementacja pojazdu hal powinna zwalniać tylko członka vehicle_prop_value_t, takiego 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 być ustawiony na NULL bu pojazdu hal.

Definicja w wierszu 1693 pliku vehicle.h .

int(* set)(struct vehicle_hw_device *device, const vehicle_prop_value_t *dane)

Ustaw wartość właściwości pojazdu. dane powinny być alokowane poprawnie, a nie NULL. Wywołujący API POSIADA pole danych. znacznik czasu danych zostanie zignorowany podczas operacji zestawu. Ustawienie niektórych właściwości wymaga posiadania dostępnego stanu początkowego. W zależności od hali pojazdu, takie dane początkowe mogą nie być dostępne przez krótki czas po inicjalizacji. W takim przypadku ustawione połączenie może powrócić -PONOWNIE, tak jak otrzymanie połączenia. W przypadku właściwości z oddzielnym sterowaniem zasilaniem ustawienie może zakończyć się niepowodzeniem, jeśli właściwość nie jest włączona. W takim przypadku hal powinien zwrócić błąd -ESHUTDOWN.

Definicja w wierszu 1706 pliku vehicle.h .

int(* subscribe)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones)

Subskrybuj wydarzenia. W zależności od danych wyjściowych list_properties, jeśli właściwość jest: a) on-change: sample_rate należy ustawić na 0. b) obsługuje częstotliwość: sample_rate należy ustawić od min_sample_rate do max_sample_rate. W przypadku właściwości typu on-change, usługa sieci pojazdów wykona kolejne wywołanie, aby sprawdzić stan początkowy. Dzięki temu implementacja hal pojazdu nie wymaga wysyłania stanu początkowego dla właściwości typu przy zmianie.

Parametry
urządzenie
rekwizyt
próbna stawka
strefy Wszystkie subskrybowane strefy dla nieruchomości strefowej. można zignorować w przypadku nieruchomości bez stref. 0 oznacza, że ​​obsługiwane są wszystkie strefy zamiast braku strefy.

Definicja w wierszu 1723 pliku vehicle.h .

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

Anuluj subskrypcję usługi.

Definicja w wierszu 1727 pliku vehicle.h .


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